package.json 解读
主要是核心的几个容易忽略的字段
1. bin
主要用于npm i -g
时候可以将脚本添加到可执行路径中,之后可以在命令行中直接执行。例如npm i -g fis3
后就可以全局使用fis命令。
2. main
require()
在引入包时候,优先检查这个字段,并将其作为模块的入口。如果不存在该字段,require()
会查找包目录下的inde.js
index.node
index.json
作为默认入口。
3. dependencies 与 devDependencies
dependencies
当前包所需要的依赖包列表,NPM会通过这个属性自动加载依赖的包devDependencies
开发时候性需要的依赖,例如mocha
4. scripts 脚本说明对象
可配置各种自定义脚本。通过npm run
执行定义的脚本。
|
|
NPM
借助NPM,Node与第三方模块形成了一个生态系统。
全局安装模式
命令: npm i -g fis3
全局模式并不是将一个模块安装为全局包的意思,并不意味从任何地方通过require()
来引用到。
本质:将一个包安装为全局可用的可执行命令。通过软链接将bin
字段配置的可执行文件链接到Node的可执行目录下。
例如,我的Node按照目录为/Users/baidu/.nvm/versions/node/v4.1.1/bin
(通过which node
查找)。那么全局模块安装模块目录为
path.resolve(process.execPath, '..', '..', 'lib', 'node_modules');
即为 '/Users/baidu/.nvm/versions/node/v4.1.1/lib/node_modules'
.这个目录就是Node可执行目录。 从bin目录可以看到,fekey命令之所以全局可执行就是因为有了如下软链:
fis3 -> ../lib/node_modules/fis3/bin/fis.js
如何安装NPM包
官网渠道一般比较慢,我们可以指定镜像源。国内比较好的就是淘宝的镜像。
npm i --registry=https://registry.npm.taobao.rog
如果想默认使用淘宝镜像源按照,可以设置默认源:
// set
npm config set registry https://registry.npm.taobao.rog
// get 查看是否设置成功
npm get registry
这里以后所有的npm i都会走淘宝的源进行按照,非常稳定。
如何发布NPM包
1. 初始化包描述文件
npm init
2. 注册包仓库帐号
npm adduser
3. 上传包
npm publish
4. 包权限管理
多人开发需要
npm owner ls <package name>
npm owner add/rm <user> <package name>