package.json---解析

之前看了蛮久阮大师的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

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值