如何发布一个npm包?

325 阅读3分钟

梳理了一下npm发包的过程:

1、基础模块代码

git.daojia-inc.com/eife/dj-inp…

项目介绍:移动端可输入添加的下拉搜索框

2、注册npm 账号

要发布一个npm ,首先要有一个npm账号和密码 ,直接去官网注册就可以了

官网地址:www.npmjs.com/

3、配置package.json

创建一个新的文件夹,直接运行 npm init,下面就是填写的配置项.

{
    "name": "dj-input-search",
    "version": "1.0.0",
    "description": "移动端可输入的下拉搜索框",
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
},
    "dependencies": {},
    "devDependencies": {
        "css-loader": "^1.0.1",
        "file-loader": "^2.0.0",
        "html-webpack-plugin": "^3.2.0",
        "scss-loader": "0.0.1",
        "style-loader": "^0.23.1",
        "vue": "^2.5.17",
        "vue-loader": "^15.4.2",
        "vue-style-loader": "^4.1.2",
        "vue-template-compiler": "^2.5.17",
},
    "repository": {
        "type": "git",
        "url": "http://git.daojia-inc.com/eife/dj-input-search.git"
},
    "author": "zhuhuanhuan",
    "license": "ISC"
}
 

需要注意的是,在配置name 的时候,去npm搜索一下,你要写的模块名称,如果搜不到,你就可以使用此名称进行发包。

还有版本号,默认是从 v1.0.0 开始的。

npm社区版本号规则采用的是语义化版本2.0.0,主要规则版本格式:

主版本号.次版本号.修订号

版本号递增规则如下:

  • 主版本号:当你做了不兼容的 API 修改,
  • 次版本号:当你做了向下兼容的功能性新增,
  • 修订号:当你做了向下兼容的问题修正。
  • 先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。

下面是package.json文件的详细内容。

  • description:描述信息,有助于搜索
  • main: 入口文件,一般都是 index.js
  • scripts:支持的脚本,默认是一个空的 test
  • keywords:关键字,有助于在人们使用 npm search 搜索时发现你的项目
  • author:作者信息
  • license:许可证
  • bugs:当前项目的一些错误信息,如果有的话
  • repository:指定一个代码存放地址。

下面是包的两种依赖方式:

  • dependencies:在生产环境中需要用到的依赖
  • devDependencies:在开发、测试环境中用到的依赖

第一种依赖安装方式:

npm install xxx --save

第二种依赖安装方式:

npm install xxx --save-dev

把你的项目可以放入当前文件夹中,记得去npm install 一下项目里面需要用到的包。

目前到这一步,大概就可以发包,但是显的有些粗糙,readme 都没写,别人不知道这个包用来干嘛的。

添加demo用例

是一个可以运行的用例

完善README .md

这个还是挺重要的,你需要这里面讲清楚这个项目是干什么用的,怎么去使用,有完整的api,有具体的使用实例。

发布

首先登录

npm adduser 
// 或者
npm login

输入账号:xxx

密码:xxx

邮箱:自己的邮箱

执行发布命令

提示+ dj-input-search@1.0.0 代表发包成功,可以npm 官网去搜索你发布的模块名称。

发布过程的会遇到几个的问题:

1、npm ERR! no_perms Private mode enable, only admin can publish this module:

或者是下面这种报错:

这里注意的是因为国内网络问题,把npm的镜像代理到淘宝或者别的地方了,这里要设置回原来的镜像。

nrm use npm // 切换npm源地址

2、npm ERR! you do not have permission to publish "your module name". Are you logged in as the correct user?

提示没有权限,其实就是你的模块名被占用了,去npm搜索一下模块名称,搜不到的名字就可以使用,并且需要把 package.json的name更改了。

其他操作

撤销发包

npm  unpublish dj-input-search@1.0.0

发包的时候,还需要注意的是,如果再次发包,需要更改版本号,否则会报错。

更新版本号

npm version 1.0.1

补充

npm link的使用

在开发模块的阶段,我们可以使用npm link 命令 把本地npm 模块链接对应到项目中去,方便开发与调试。

www.jianshu.com/p/aaa7db89a…