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 条评论
登录 后参与评论

相关文章

  • npm模块管理器

    npm不需要单独安装。在安装node的时候,会连带一起安装npm。但是,node附带的npm可能不是最新版本,最好用下面的命令,更新到最新版本。

    奋飛
  • 发布项目到NPM

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    奋飛
  • npm并行&串行执行多个scripts命令

    通过npm run <commander> 可以运行 package.json 中脚本,Npm 命令不能提供立即运行多个脚本的方式,同时运行需要打开多个终端窗口

    奋飛
  • electron-vue———环境升级

    https://gitee.com/yu_sheng/electron-vue   个人修改升级

    余生
  • 将自己的nodeJS项目分享到npm上

    在项目中输入cmd 第三种:使用按住电脑上的window+r,进入如下图所示,然后输入cmd,点击确定进入控制台

    _kyle
  • NPM - Node Package Manager - Node 包管理器

    eadela
  • 微信小程序支持npm包

    在8月30号的时候,微信开发者工具进行了一次升级,在升级日志中我们看到微信小程序开始支持npm包管理了。但是小程序的基础版本库是从2.2.1版本开始支持,很遗憾...

    无邪Z
  • 学会发布自己的npm包

    卡少
  • nvm npm nrm 区别

    作用:提供了一些最常用的NPM包镜像地址,能够让我们快速的切换安装包时候的服务器地址; 什么是镜像:原来包刚一开始是只存在于国外的NPM服务器,但是由于网络原...

    eadela
  • nodejs npm常用命令

    npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准。有了npm,可以很快的找到特定服务要使用的包,进行下载、安装以及管理已经安...

    bear_fish

扫码关注云+社区

领取腾讯云代金券