之前看了蛮久阮大师的javascript标准参考教程。
前面和边上的妹纸关于dependencies和devDependencies讨论了一下,看来还是要梳理一下知识点。
(讲道理,用了博客一个多月,整理了一些知识点,有时候用到想不起来就过来查一下,很方便,新技能get。 []~( ̄▽ ̄)~*)
每个项目的根目录下一般都有一个package.json文件,定义项目所需要的各种模块,以及项目的配置信息。npm install则是根据这个配置文件,自动下载所需要的模块,也就是配置项目所需的运行和开发环境。
package.json文件可以手工编写,也可以用npm init命令自动生成,除了项目名称和项目版本是必填的,其他都是选填的。
最简单的package.json
{
"name":"aaa", //项目名称
"version":"0.0.0" //项目版本(大版本.次要版本.小版本)
}
package是一个JSON对象,对象的每个成员就是当前项目的一项设置。
script字段
script指定运行脚本命令的npm命令行缩写。
"script":{
"start":"node index.js",
"test":"tap test/*.js"
}
//运行npm run start时,执行node index.js命令
//运行npm run test时,执行tap test/*.js命令
dependencies字段,devDependencies字段
dependencies字段指定项目运行所依赖的模块。
devDependencies字段指定项目开发所需要的模块。
{
"devDependencies":{
"browserify":"~13.0.0",
"babel-core":"^6.5.0"
}
}
//模块名:对应的版本
对应的版本:
指定版本: 比如1.2.2,安装时只安装指定版本1.2.2
波浪号(tilde) + 指定版本:比如~1.2.2,表示安装不低于1.2.2的1.2.x最新版本,但是不会安装1.3.x,等于只会影响小版本的版本号。
插入号(caret) + 指定版本 : 比如^1.2.2,表示安装不低于1.2.2的1.x.x最新版本,但是不会安装2.x.x,等于不会影响大版本号。如果大版本号为0,则插入号和波浪号效果一样,不会改变次要版本号。
latest:安装最新的版本
如果一个模块不在package.json文件汇总,则可以单独安装这个模块,并使用相应的参数将其写入package.json中。
$ npm install express --save $ npm install express --save-dev
例如安装上面的express模块,–save表示将模块写入dependencies属性,–save-dev表示将模块写入devDependencies属性。
peerDependencies
假设项目依赖A模块和B模块的1.0版本,那么依赖里面写A:1.0,B:1.0,但是A模块本身依赖B模块的2.0版本,然后不知道,用的时候报错了。这就很尴尬了。这时候就可以用peerDependencies,用来供A模块指定其所需要的主工具的版本。
{
"name": "chai-as-promised",
"peerDependencies": {
"chai": "1.x"
}
}
在A模块内部的package里面写。这样就是说在安装chai-as-promised时,chai必须一起安装。如果项目指定的依赖是chai的2.0版本就报错。
npm从3.0版本开始peerDependencies不再默认安装。。- -…
bin字段
bin用来指定各个内部命令对应的可执行文件的位置。
"bin":{
"someTool":"./bin/someTool.js"
}
//someTool命令对应可执行文件为bin子目录下的someTool.js
main字段
main字段指定加载的入口文件,require(‘moduleName’)就会加载这个文件。默认为根目录下的index.js
config字段
用于向环境变量输出值
{
"name" : "foo",
"config" : { "port" : "8080" },
"scripts" : { "start" : "node server.js" }
}
//server.js引用字段的值
http.createServer(…).listen(process.env.npm_package_con fig_port)
browser字段
指定该模板供浏览器使用的版本。
engines字段
指明项目所需要的node.js版本
man字段
指定当前模块的man文档位置
preferGlobal字段
布尔值,用户不将该模块安装为全局模块时,要不要显示警告。
style字段
供指定浏览器使用,样式文件所在的位置。
我是看着阮大师的文档大致写了下,加深自己的记忆。刚才项目上碰到依赖问题还真的派上用场了。厉害了。
链接地址:http://javascript.ruanyifeng.com/nodejs/packagejson.html#toc0