{
"name": "myproject",
"version": "2.0.4",
"description": "基于nodejs,express,vue2 管理系统.",
"keywords": [
"vue",
"vuex",
"vue-router",
"webpack",
"server-side"
],
"author": "lengyuefengqing",
"license": "MIT",
"scripts": {
"init": " node build/restore",
"dump": " node build/dump",
"dev": "npm run static && cross-env NODE_ENV=development MICRO_CACHE=true node ./server",
"start": "npm run static && cross-env NODE_ENV=development MICRO_CACHE=true node ./server",
"build": "npm run static && npm run build:client && npm run build:server",
"build:client": "cross-env NODE_ENV=production webpack --config build/webpack.client.config.js --progress --hide-modules",
"build:server": "cross-env NODE_ENV=production webpack --config build/webpack.server.config.js --progress --hide-modules",
"static": "node ./build/copy"
},
"dependencies": {
"archiver": "^1.3.0",
...
"vuex-router-sync": "^4.3.2"
},
"devDependencies": {
"autoprefixer": "^7.1.0",
...
"webpack-merge": "^4.1.0"
},
"engines": {
"node": "8.x"
}
}
当我们创建一个node项目,意味着创建一个module模块,这个模块的描述文件,叫package.json。
"name": 包名
"version": 包的版本号
main: 入口文件,一般都是 index.js
scripts:支持的脚本,默认是一个空的 test
keywords:关键字,有助于在人们使用 npm search 搜索时发现你的项目
"description": 包的描述
"author": 包的作者
repository: 包代码的repo信息,包括type和URL,type可以是git或者svn,url则是包的repo地址。
license:默认是 [MIT],项目许可证,让使用者知道是如何被允许使用此项目。
"dependencies": 生产环境依赖包列表
"devDependencies": 开发环境、测试环境依赖包列表
engines: 声明项目需要的node或npm版本范围
{ “engines” : { “npm” : “~1.0.20” } }
{ “engines” : { “node” : “>=0.10.3 <0.12” } }
npm版本号规范
如果一个项目打算与别人分享,应该从 1.0.0 版本开始。以后要升级版本应该遵循以下标准:
补丁版本:解决了 Bug 或者一些较小的更改,增加最后一位数字,比如 1.0.1
小版本:增加了新特性,同时不会影响之前的版本,增加中间一位数字,比如 1.1.0
大版本:大改版,无法兼容之前的,增加第一位数字,比如 2.0.0
了解了提供者的版本规范后, npm 包使用者就可以针对自己的需要填写依赖包的版本规则。
作为使用者,我们可以在 package.json 文件中写明我们可以接受这个包的更新程度(假设当前依赖的是 1.0.4 版本):
如果只打算接受补丁版本的更新(也就是最后一位的改变),就可以这么写:
1.0
1.0.x
~1.0.4
如果接受小版本的更新(第二位的改变),就可以这么写:
1
1.x
^1.0.4
如果可以接受大版本的更新(自然接受小版本和补丁版本的改变),就可以这么写:
x
小结一下:总共三种版本变化类型,接受依赖包哪种类型的更新,就把版本号准确写到前一位。
依赖的安装
npm install
如果想只安装 dependencies 中的内容,可以使用 --production 字段:
npm install --production
安装指定版本:
npm install 默认安装最新版本,如果想要安装指定版本,可以在库名称后加 @版本号:
$ npm install sax@latest
$ npm install sax@0.1.1
$ npm install sax@">=0.1.0 <0.2.0"
安装参数 --save 和 --save -dev
添加依赖时我们可以手动修改 package.json 文件,添加或者修改 dependencies devDependencies 中的内容即可。
另一种更酷的方式是用命令行,在使用 npm install 时增加 --save 或者 --save -dev 后缀:
npm install <package_name> --save 表示将这个包名及对应的版本添加到 package.json的 dependencies
npm install <package_name> --save-dev 表示将这个包名及对应的版本添加到 package.json的 devDependencies
使用下载好的包
下载后 node_modules 文件夹中有要使用的包,我们就可以使用其中的代码了。
比如在 Node.js 项目中,我们可以用 require(XXX) 引入它。
更新本地 package
有时候我们想知道依赖的包是否有新版本,可以使用 npm outdated 查看,如果发现有的包有新版本,就可以使用 npm update <package-name> 更新它,或者直接 npm update 更新所有。
npm update 的工作过程:
1、先到远程仓库查询最新版本
2、然后对比本地版本,如果本地版本不存在,或者远程版本较新
3、查看 package.json 中对应的语义版本规则
4、如果当前新版本符合语义规则,就更新,否则不更新
卸载本地 package
卸载一个本地 package 很简单,npm uninstall <package-name> 即可
npm run
npm 还可以直接运行 package.json 中 scripts 指定的脚本:
{
"name": "demo",
"scripts": {
"lint": "jshint **.js",
"test": "mocha test/"
}
}
npm run 是 npm run-script 的缩写。
命令行输入 npm run lint 或者 npm run-script lint 就会执行 jshint **.js 。
npm run 会创建一个Shell,执行指定的命令,并临时将node_modules/.bin加入PATH 变量,这意味着本地模块可以直接运行。
package.json 中的 scripts 执行的脚本是本地项目内 node_modules -> .bin 内的脚本。
直接运行 npm run 会列出当前项目的 package.json 中 scripts 属性下的所有脚本命令。
npm install from github
npm install 也可以直接从 github 下载:
npm install git://github.com/package/path.git#0.1.0
npm info
npm info <package-name> 可以查看指定包的信息:
npm adduser
npm adduser 用于在npmjs.com注册一个用户:
$ npm adduser
Username: YOUR_USER_NAME
Password: YOUR_PASSWORD
Email: YOUR_EMAIL@domain.com
npm home/repo
npm home <package-name>命令可以打开指定模块的主页;
npm repo <package-name>命令则是打开指定模块的代码仓库。
npm prune
prune 即“修剪”的意思。
npm prune 可以检查出当前项目的 node_modules目录中,没有在 package.json里提到的模块。