如何发布一个npm包

要点

  • 新建个npm账号
  • 项目初始化
  • 发布

什么是npm?

npm是javascript的包管理工具,是前端模块化下的一个标志性产物 简单地地说,就是通过npm下载模块,复用已有的代码,提高工作效率

  1. 从社区的角度:把针对某一特定问题的模块发布到npm的服务器上,供社区里的其他人下载和使用,同时自己也可以在社区里寻找特定的模块的资源,解决问题
  2. 从团队的角度:有了npm这个包管理工具,复用团队既有的代码也变的更加地方便

新建个npm账号

npmjs上注册一个自己的账号。 点击创建账号注册一个自己的账号。

如果已经有自己的账号,登录即可:npm login

项目初始化

新建一个项目,cd进去,然后执行npm init来初始化项目的配置。

在执行npm init之前,有两点需要我们注意一下:

包名不能重复

npm对包名的限制:不能有大写字母/空格/下划线 我们首先要验证一下我们即将要起的包名是否存在。验证我们即将要起的包名是否存在的方式有两种:

去npm仓库中输入一下“我们即将要起的包名”,看是否可以查找到。

直接使用npm install 包名,如果能够下载下来,那么说明这个包名在npm仓库是存在的,也就是不可使用的。

这样提前验证一下,能够避免一些发布(npm publish)时会出现的这个错误。

配置项:

配置项 意义 默认值 备注
name 填写你这个包的名字 默认是你这个文件夹的名字 不过这里要着重说一下,最好先去npm上找一下有没有同名的包。最好的测试方式就是,在命令行里面输入npm install 你要取的名字,如果报错,那么很好,npm上没有跟你同名的包,你可以放心大胆地把包发布出去。如果成功下载下来了。。。那么很不幸,改名字吧。。。
version 包的版本 默认是1.0.0
description 项目描述
entry point 入口文件 默认是Index.js 你也可以自己填写你自己的文件名
test command 测试命令
git repository git仓库地址 如果你的包是先放到github上或者其他git仓库里,这时候你的文件夹里面会存在一个隐藏的.git目录,npm会读到这个目录作为这一项的默认值。如果没有的话,直接回车继续。
keyword 这个是一个重点,这个关系到有多少人会搜到你的npm包。尽量使用贴切的关键字作为这个包的索引。
author 作者 写你的账号或者你的github账号吧
license 执照 这个直接回车,开源文件来着

然后我们回到我们的文件目录里面去看一看,发现多出来一个package.json文件。

{
  "name": "senmeng-header",
  "version": "1.0.0",
  "description": "header",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "header"
  ],
  "author": "senmeng",
  "license": "ISC",
  "homepage": "http://www.web3.xin/"
}

写项目

首先入口文件是index.js。

!function () {
    console.log(`这是引入的包入口`)
}()

然后写个readme.md文件。一般这个readme.md文件都是该项目的一些说明,比如可以放一些项目的启动命令、构建命名等等。

CommonJS标准 我们看到上面代码中使用CommonJS标准。一个单独的文件就是一个模块,模块内将需要对外暴露的变量放到exports对象里,可以是任意对象,函数,数组等,未放到exports对象里的都是私有的。用require方法加载模块,即读取模块文件获得exports对象。这里出现的module,exports,require是JS的新语法吗?不是新语法,只是CommonJS的语法糖。

路径的引用: var Hi = require('./hi');这种是用require加载时写的是相对路径,让Nodejs去指定路径下加载模块。如果省略相对路径,默认就会在node_modules文件夹下找hi模块,那很可能因为找不到而报错。

发布

添加账户

使用npm adduser命令来添加npm的账户名、密码和邮箱即可

发布

就可以执行npm publish命令进行发布啦。下面就是见证奇迹的时刻啦,出现截图中的样子就是发布成功啦。

更新npm发布后的包

更新npm包也是使用npm publish命令发布,不过必须更改npm包的版本号,也就是package.json中的version字段,否则会报错

npm的版本控制

在我们的package.json里面有一个version字段。那么,怎么在项目不断构建的过程中调整版本呢? npm有一套自己的版本控制标准——Semantic versioning(语义化版本)

具体体现为:

版本格式:主版本号.次版本号.修订号,版本号递增规则如下:

主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。

例如:我原本的项目是1.0.0版本的话 若是1中情况,变为1.0.1 若是2中情况,变为1.1.0 若是3中情况,变为2.0.0

通过npm version 自动改变版本 update_type为patch, minor, or major其中之一,分别表示补丁,小改,大改。

联系我们

邮箱 626512443@qq.com
电话 18611320371(微信)
QQ群 235681453

Copyright © 2015-2024

备案号:京ICP备15003423号-3