如何新建一个npm包,并且发布package到npm社区

1,090 阅读1分钟

1、首先你需要安装node和npm

2、新建一个npm包

执行命令:

npm init

然后跟着程序走,就会生成一个package.json

Last login: Tue Sep 17 20:37:27 on ttys007
fushuangyudeMacBook-Pro:test-package dm$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (test-package) 
version: (1.0.0) 
description: 
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (ISC) 
About to write to /Users/dm/npm插件/test-package/package.json:
{
  "name": "test-package",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
Is this OK? (yes) 

输入完成之后,系统会要你确认文件的内容是否有误,如果没有问题就直接输入yes或者按enter,这样package.json就创建好了。 "main": “index.js”,是这个包的入口,也就是在这个文件里面导出组件。这个入口是自定义,如果你要把index.js放到src文件夹下,就是“src/xxx”。

Package.json 属性说明

name - 包名。 version - 包的版本号。 description - 包的描述。 homepage - 包的官网 url 。 author - 包的作者姓名。 contributors - 包的其他贡献者姓名。 dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。 repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。 main - main 字段指定了程序的主入口文件,require('moduleName') 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。 keywords - 在npm社区的搜索关键字

3、发布package包

  • 首先注册一个npm账号
  • 更改.npmrc中的配置为:

registry = http://registry.npmjs.org

为什么要更改registry呢?因为registry.npm.taobao.org只是淘宝镜像,我们要把代码发布到国外的npm服务器上,不然你在执行npm publish发布时就会报如下图所示的报错:

Tips: 登录npm账号,使用 npm adduser 或者 npm login —registry http://registry.npmjs.org; 查看.npmrc文件的配置:执行 npm config get 在命令行打印 或者 open .npmrc打开文件; 更改.npmrc文件配置方法: 方法1: npm config set registry http://registry.npmjs.org(修改.npmrc文件中的 registry = registry.npmjs.org); 方法2: npm config edit; 方法3: 在用户目录下执行命令: open .npmrc,直接打开文件进行修改 (限mac电脑);

  • 为了维护包,npm必须使用仓库账号才允许将包发布到仓库中;添加npm账号,执行npm adduser,然后跟着程序输入账号密码等信息即可。这些信息都会写入.npmrc文件中;

在过程中我遇到了一个问题,如下图: 这是由于我改了npm账号的密码,需要重新添加npm账号,当我执行npm adduser时,报错: npm ERR! 409 Conflict - PUT https://registry.npm.taobao.org/-/user/org.couchdb.user:dm123 - [conflict] User dm123 already exists 错误说明很清楚了,产生冲突,本地已经有个dm123这个账号了,这是用adduser是不行了。 解决方案:重新登录npm login —registry http://registry.npmjs.org,然后跟着程序走,与adduser表现一样。

  • 把包发布到npm社区,在包目录下执行命令:npm publish; 发布成功状态:

4、使用

在需要使用的project根目录下输入指令npm install packageName就可以把需要的npm包下载下来使用了。 在需要引入的文件夹中import倒入就好了!

5、常见问题

  • 更新包的话,修改代码后不能直接发布,这里我们需要修改package的version号,修改之前先说下npm维护package版本的规则x.y.z

x: 主版本号,通常有重大改变或者达到里程碑才改变; y: 次要版本号,或二级版本号,在保证主体功能基本不变的情况下,如果适当增加了新功能可以更新此版本号; z: 尾版本号或者补丁号,一些小范围的修修补补就可以更新补丁号.

$ npm version patch <=> z++ $ npm version minor <=> y++ && z=0 $ npm version major <=> x+= && y=0 && z=0

然后执行npm publish就可以更新到npm了

  • 如果在发布中显示类似'请确认你是否有权限更新xxx包'的英文提示,这就说明你的包名有人使用了,应该换一个名字。
  • 删除发布的模块 $ npm unpublish package@version 或者 $ npm unpublish --force package