如何发布一个npm模块

目录
一、发布普通 npm 模块
二、发布 scoped package

一、发布普通 npm 模块

1.注册一个 npm 账号

进入官网注册 npm 账号。

2.初始化包描述文档

在你要发布的模块工程根目录下,初始化 package.json (如果没有的话)

1
npm init

package.json 中 npm 所需的主要几个关键字段:

  • name: 包名,必须唯一,不能跟npm上的包重名。可以在 npm 官网搜索名字,如果存在则需要换个名字。
  • version: 版本号,每次发布至 npm 都需要修改版本号,不能比上一次发布的版本号低。
  • description: 描述。
  • main: 入口文件,需指向我们编译后的包文件。
  • keyword: 关键字,以空格分离,希望用户搜索的词。
  • author: 作者。
  • private: 是否私有,需要修改为 false 才能发布到 npm。
  • license: 开源协议。

3.添加账号授权

1
npm adduser

然后根据提示一步一步输入你的 npm 账号、密码和邮箱。
然后你可以通过如下命令来验证登录是否正确。

1
npm whoami

4.发布

1
npm publish

二、发布 scoped package

scope是npm的新特性。如果一个模块的名字以 @ 开头,那它就是一个 scoped package:

1
@scope/project-name

每一个npm用户都有拥有一个自己的 scope:当前用户名 username。

初始化一个 scoped-package

通过在包名字前添加 scope:

1
2
3
{
"name": "@usernane/project-name"
}

也可以使用 npm init 命令自定义 --scope 选项来设置scope:

1
npm init --scope=username

如果你在大多数时候使用的 scope 都是相同的,可以设置一个默认的 scope,这样每次初始化的时候会自动使用该 scope:

1
npm config set scope <your_scope>

发布 scoped-package

发布 scoped 模块跟发布普通模块一样:

1
npm publish

默认状态下scoped package包是私有的。然而,你可以把 scoped package 免费滴发布为公共包。只需要在发布时配置 --access 选项即可:

1
npm publish --access=public

Tips

1. 确认镜像源

发布npm包之前,首先一定要确保使用的是npm官方镜像源。如果你使用了nrm来管理镜像,可以通过nrm ls来查看下当前使用的是什么源,如果不是 npmjs 官方镜像,比如 taobao,那么使用nrm use npm切换过来。

2. 预检查包内容

发包之前可以通过 npm pack 命令在本地产生一个tgz压缩包,里面的文件就是你将要传到 npm 的内容。如果有遗漏或者多了不需要发布的文件,则可以通过调整 .npmignore 文件的配置来调整。

3. 检查包名是否重名

包名字不能与 npm 中已有的包同名,如果已存在同名包,否则会提交失败。通过在 npm 官网搜索包名,如已存在,则需要换一个。

4. 检查版本号

每次提交版本号都要比上次的高,否则也会提交失败。从 npm 上查看自己上次发布的版本号,如果相同说明忘记更新版本号,根据需要通过 npm version 命令修改版本。