如何发布一个package到npm

以下面的一个简单需求为例来发布一个package到npm:访问github地址查看源码

发布一个say-hello-world的package到npm; 这个package的功能是提供一个sayHelloWorld的方法。

注意:因为say-hello-world package已经发布到npm了,所以大家在跟随文档操作的时候需要换个名字。

  • 第一步:
    在项目的根目录下创建一个名字为node_modules的目录,此目录用来放置所有的node模块

  • 第二步:
    在node_modules目录下名字say-hello-world目录;

  • 第三步:
    say-hello-world目录下新建两个文件:

    • index.js

      function sayHelloWorld() {
        console.log("Hello world !");
      }
      module.exports = sayHelloWorld;
      
    • package.json

      {
        "name": "say-hello-world", // package的名称
        "author": "yourname <me@hello.com> (http://hello.com)", // 作者的相关信息
        "version": "0.0.1", // 版本号(semantic version)
        "main": "index" // 入口文件,当在其他文件中require('say-hello-world')时,将会加载index.js
      }
      
    • 发布say-hello-world包到npm
      • 首先要注册一个npm账号(如果没有的话)
      • 注册完后,在命令窗口运行npm adduser(登陆npm),会提示你输入用户名和密码;
      • 登陆成功后,在say-hello-world目录下执行命令npm publish(发布package)
      • 发布成功后就可以登陆到npm官网去看自己发布的package。

到这里,我们已经成功发布了say-hello-world包到npm,接下来我们来尝试使用一下say-hello-world包

  1. 先新建一个空的目录test;然后在命令行中切换到test目录;
  2. 然后执行npm install say-hello-world命令;
  3. 执行成功后在test目录下看到多了一个node_modules的目录,在node_modules目录中就可以看到我们刚才发布的say-hello-worldpackage;
  4. 然后再test目录下新建一个hello-world.js来测试一下sayHelloWorld()方法,hello-world.js中的内容如下:
    var sayHelloWorld = require('say-hello-world');
    sayHelloWorld();
    
  5. 在命令行中进入test目录,然后执行node hello-world.js,就会在看到输出:Hello world !.

如何更新发布到npm的package?(以刚才发布的say-hello-world为例)

当我们对say-hello-world做了改动就需要更新到npm.

  • 进入到say-hello-world目录, 对index.js做一些修改(做为要更新的内容)
  • 然后再命令行执行npm version patch, 此命令会把package.jsonversion更新到0.02
  • 然后执行npm publish就可以更新到npm了