package.json(1)踏入门槛

阮一峰源地址
注:本文主要记录一些难以理解的属性

  1. version:version是版本(遵守“大版本.次要版本.小版本”的格式)。
  2. scripts指定了命令缩写,前面加上npm run即可使用后面引号内的命令。
  3. dependencies字段指定了项目运行所依赖的模块,devDependencies指定项目开发所需要的模块。与之相对应的是下载时的 --save写入运行时依赖属性与--save-dev写入开发时依赖属性。关于版本号
指定版本:比如1.2.2,遵循“大版本.次要版本.小版本”的格式规定,安装时只安装指定版本。
波浪号(tilde)+指定版本:比如~1.2.2,表示安装1.2.x的最新版本(不低于1.2.2),但是不安装1.3.x,
也就是说安装时不改变大版本号和次要版本号。
插入号(caret)+指定版本:比如ˆ1.2.2,表示安装1.x.x的最新版本(不低于1.2.2),但是不安装2.x.x,
也就是说安装时不改变大版本号。需要注意的是,如果大版本号为0,则插入号的行为与波浪号相同,
这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。
latest:安装最新版本。
  1. package.json文件可以手工编写,也可以使用npm init命令自动生成。
$ npm init
  1. 有了package.json文件,直接使用npm install命令,就会在当前目录中安装所需要的模块。
  2. peerDependencies:如果A模块为1.0,B模块为2.0,且只有这两个版本可以并存,那么使用这个属性可以限制。注意,从npm 3.0版开始,peerDependencies不再会默认安装了。
{
  "name": "chai-as-promised",
  "peerDependencies": {
    "chai": "1.x"
  }
}

上面代码指定,安装chai-as-promised模块时,主程序chai必须一起安装,而且chai的版本必须是1.x。如果你的项目指定的依赖是chai的2.0版本,就会报错。

  1. bin:用于规定对应文件的位置类似于别名
"bin": {
  "someTool": "./bin/someTool.js"
}

scripts: {  
  start: './node_modules/bin/someTool.js build'
}
// 简写为
scripts: {  
  start: 'someTool build'
}

所有node_modules/.bin/目录下的命令,都可以用npm run [命令]的格式运行。在命令行下,键入npm run,然后按tab键,就会显示所有可以使用的命令。

  1. main:main字段指定了加载的入口文件,require('moduleName')就会加载这个文件。这个字段的默认值是模块根目录下面的index.js。
  2. config:原图奉上


    image.png

    image.png
  3. browser:browser指定该模板供浏览器使用的版本。Browserify这样的浏览器打包工具,通过它就知道该打包那个文件。
"browser": {
  "tipso": "./node_modules/tipso/src/tipso.js"
},
  1. engines:用来指定平台node的版本或者npm版本
{ "engines" : { "node" : ">=0.10.3 <0.12" } }
{ "engines" : { "npm" : "~1.0.20" } }
  1. man:man用来指定当前模块的man文档的位置。
"man" :[ "./doc/calc.1" ]
  1. preferGlobal:preferGlobal的值是布尔值,表示当用户不将该模块安装为全局模块时(即不用–global参数),要不要显示警告,表示该模块的本意就是安装为全局模块。
  2. style:style指定供浏览器使用时,样式文件所在的位置。样式文件打包工具parcelify,通过它知道样式文件的打包位置。
"style": [
  "./node_modules/tipso/src/tipso.css"
]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、概述 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目...
    JC86阅读 361评论 0 0
  • 原文:http://javascript.ruanyifeng.com/nodejs/packagejson.ht...
    水墨熊猫阅读 1,226评论 0 2
  • package.json文件 概述 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目...
    梦的味道_阅读 366评论 0 1
  • package.json定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)pac...
    李欢li阅读 233评论 0 0
  • package.json必须是纯JSON的,而不仅仅是一个JavaScript对象字面量。 name和versio...
    AmazRan阅读 5,339评论 0 1