package.json

每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install 命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。

package.json文件可以手工编写,也可以使用npm init命令自动生成。

注意:npm init 时,用户需回答一些问题,然后在当前目录生成一个基本的package.json文件。所有问题之中,只有项目名称(name)和项目版本(version)是必填的,其他都是选填的。

一、scripts

scripts指定了运行脚本命令的npm命令行缩写,比如start指定了运行npm run start时,所要执行的命令。 下面的设置指定了npm run preinstall、npm run postinstall、npm run start、npm run test时,所要执行的命令。

"scripts": {
    "preinstall": "echo here it comes!",
    "postinstall": "echo there it goes!",
    "start": "node index.js",
    "test": "tap test/*.js"
}

二、dependencies,devDependencies

dependencies和devDependencies两项,分别指定了项目运行所依赖的模块、项目开发所需要的模块。

npm install express --save
npm install express --save-dev

--save参数表示将该模块写入dependencies属性, --save-dev表示将该模块写入devDependencies属性。

三、bin

bin项用来指定各个内部命令对应的可执行文件的位置。

"bin": {
  "someTool": "./bin/someTool.js"
}

上面代码指定,someTool 命令对应的可执行文件为 bin 子目录下的 someTool.js。Npm会寻找这个文件,在node_modules/.bin/目录下建立符号链接。在上面的例子中,someTool.js会建立符号链接npm_modules/.bin/someTool。由于node_modules/.bin/目录会在运行时加入系统的PATH变量,因此在运行npm时,就可以不带路径,直接通过命令来调用这些脚本。

四、config

config字段用于向环境变量输出值。

{
  "name" : "foo",
  "config" : { "port" : "8080" },
  "scripts" : { "start" : "node server.js" }
}

然后,在server.js脚本就可以引用config字段的值。

http.createServer(...).listen(process.env.npm_package_config_port)

用户可以改变这个值。

$ npm config set foo:port 80

五、常用字段说明及示例

只用name和version必须的!!!

1. name:项目名,npm install依赖此名称!

注意: (1)name中不能包含汉子、空格、不能以点号或下划线开头; (2)不要在name中包含js, node字样; (3)这个名字可能在require()方法中被调用,所以应该尽可能短;

2. version:项目版本

注意:npm采用”语义版本“管理软件包。所谓语义版本,就是指版本号为a.b.c的形式,其中a是大版本号,b是小版本号,c是补丁号。

3. description:项目描述,npm search会用到

4. keywords:关键字,npm search会用到

5. homepage:项目官网的url

6. bugs:项目的提交问题的url和(或)邮件地址

{ 
	"url" : "http://github.com/owner/project/issues", 
	"email" : "project@hostname.com"
}

7. License:如果是使用一个普遍的license,比如BSD-3-Clause或MIT,直接使用:

{ "license" : "BSD-3-Clause" }

8. Author, contributors:author是一个人,contributors是一组人

{ 
	"name" : "Li Gang",
 	"email" : "ligang_WEB@163.com",
 	"url" : "http://blog.csdn.net/ligang2585116/"
}

8. files:项目中的文件的数组,以提供一个.npmignore文件,让即使被包含在files字段中得文件被留下。

9. repository:码存放的地方

10. Dependencies:当前包所依赖的其他包。

注意:请不要将测试或过渡性的依赖放在dependencies中

11. devDependencies:开发所需依赖的其他包。

注意:如果有人要用你的模块,但他们可能不需要你开发所使用的外部测试或者文档框架。

12. engines:指定工作的node的版本

{ "engines" : { "node" : ">=0.10.3 <0.12" } }

13. private:设置为true时,npm就不会发布它

注意:这是一个防止意外发布私有库的方式。如果你要确定给定的包是只发布在特定registry(如内部registry)的,用publishConfig hash的描述来重写registry的publish-time配置参数。

14. publishConfig:发布时使用的配置值,只有“tag”和“registry”与发布的意图有关。

完整的字段说明:http://www.mujiang.info/translation/npmjs/files/package.json.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券