在上一节中,我们一起学习了全世界人民都知道的hello world.

这一节我们将一起来搞搞如何发布一个自己构建的包!

其实挺简单的,就是尼玛的天朝服务器问题(墙内看墙外总的折腾下),这里就不吐槽了!!

虽然简单,但是其中有很多细节点也要注意!

首先创建一个文件夹 "mynpm"!,按照规范我们在mynpm下创建1个文件夹和两个子文件lib、README.md、package.json.然后在lib文件夹下创建一个interface.js的世界伟大程序..

node_modules包提出来使用 node的包_node_modules包提出来使用



exports.hello = function() {
    console.log('hello');
};


注意:README.md很重要的一个文件,我第一次创建的时候没有创建“读我”,然后控制台报错(具体原因不明!),反正你就创建吧,这是一种约定俗成的规范。至于里面就是写点如何让其他使用者也来强奸这个应用程序。(md是markdown语法的文件格式缩写,关于MD可以狠狠的点“这里”)

package.json是commonjs中的规范用来描述包文件,但是nodejs并未完全遵循。(里面的字段不做过多介绍)如果是手动创建请严格遵循JSON格式

package.json也可以通过命令 npm init 来自动创建, 这是一个交互式的创建方式,会让你填写一下字段

注意:()代表有默认值,可以直接回车跳过

entry point: (index.js) //入口文件,默认情况下我们跳过。但是这里我们是按照规范来创建的目录,入口文件interface.js是在lib目录下,所以这里如果自定义了目录结构和文件名,需要指定其路径.我们这里应该是"./lib/interface.js"

node_modules包提出来使用 node的包_字段_02

 

生成完毕后 会跳出Is this ok? 回车即可。这样我们就生成了一个package.json的配置说明文件。

具体的字段说明如下:

$ npm init
name: (hello)                               //模块名字,npm init会自动取当前目录名作为默认名字
version: (0.0.0) 0.0.1                      //模块版本号,这个大家按自己习惯来定就可以


description: A example for write a module //模块说明entry point: (none) //模块的入口文件,我们这里是interface.jstest command: (none) //测试脚本,选填git repository: Elmer Zhang //模块的git仓库,选填。npm的用户一般都使用github做为自己的git仓库keyword: (none) freeboy6716@ //模块关键词author: (none) http://www.elmerzhang.com //模块作者license: (none) hello.js //开源证书

 

 

 

 

 

 

先去测试下模块是否可运行,回到上级目录执行安装(node模块会现在本地的查找是否有该模块,没有才会去线上下载)



F:\package>mynpm>cd..

F:\package>

F:\package>npm install mynpm
mynpm@0.0.1 node_modules\mynpm

F:\package>node
> var test = require('mynpm')
undefined
> test.hello()
hello
undefined
>_



OK!没问题。如果没有用户可以通过npm adduser 注册一个用户。完成之后可以使用npm whoami来检查用户是否取得?

通过npm -h可以取得命令帮助文档..

OK。回到mynpm目录执行npm publish 就发布到线上了。如果没有错误的话!如果报错!由于网络问题的可以多测试一次。但注意观察输出的错误日志,认真分析日志还是可以比较简单的找出错误的

可以在https://npmjs.org官网上查找刚才发布的文件。这里我就不发布了。可以看一个我之前发布的一个。。

node_modules包提出来使用 node的包_字段_03

 

当然,你也可以通过npm unpublish 来撤销这种无意义的发布!!

例如

> npm unpublish somepackage-dev[@0.0.0] 后面跟的是版本号