Node.js package.json文件

npm模块依赖项存储在名为package.json的配置文件中,该文件位于项目的根目录中。package.json中的JSON数据必须遵循某个模式。它必须有包的名称和版本。包名称由name字段指定。该名称应该在npm注册表中是包的唯一标识。

通过使用npm,该名称将成为URL的一部分、命令行参数和目录名称。因此,名称不能以点或下划线开头,不能包含空格或任何其他非网址安全字符。

公共包必须在npm注册表中具有唯一的名称。

下面的代码有一个最小的package.json文件 {"name": "package-name", "version": "0.0.0"} 包的版本在版本字段中指定。版本,当与名称结合时,为包提供真正唯一的标识符。版本号指定主版本,次版本和修补程序号,用点分隔。npm允许版本以 v 字符开头。

你可以通过将标记附加到补丁编号来指定内部版本号。有两种类型的标签,prerelease和postrelease。Postrelease标签增加版本号,而prerelease标签减少它。postrelease标记是数字跟随的连字符,其他标签都是prerelease标签。

以下示例显示版本标签。

  1. 0.9.6-7
  2. 0.9.6-7-beta
  3. 0.9.6-6
  4. 0.9.6
  5. 0.9.6beta

description和keywords

description字段提供包的文本描述。

keywords字段提供了一组关键字来描述包。

下面的代码显示了一个包含description和keywords字段的package.json。

  1. "description": "This is a description of the module",
  2. "keywords": ["foo", "search", "baz"]

author和contributors

主作者在author字段中指定,其中只能包含一个条目。contributors可以包含一组人。

有两种方法可以指定一个人。

  1. "author": {"name": "Your Name",
  2. "email": "name@www.nodejs.org",
  3. "url": "http://www.nodejs.org"},
  4. "contributors": [{"name": "Name 1",
  5. "email": "n@www.nodejs.org",
  6. "url": "http://www.nodejs.org"},
  7. {"name": "Name 2",
  8. "email": "m@www.nodejs.org",
  9. "url": "http://www.nodejs.org"
  10. }
  11. ]

或者

  1. "author": "Your Name <name@www.nodejs.org> (http://www.nodejs.org)",
  2. "contributors": ["Name 1 <n@www.nodejs.org> (http://www.nodejs.org)",
  3. "Name 2 <m@www.nodejs.org> (http://www.nodejs.org)"]

主入口点

包的主入口点文件存储在package.json文件中。main 字段告诉Node当使用 require()时要加载哪个文件。

将主入口点设置到位于 src 子目录中的名为 bar.js 的文件。 "main": "./src/bar.js"

preferGlobal设置

要提醒用户全局安装软件包,请使用 preferGlobal 设置

dependencies

包的依赖关系在package.json文件的dependencies字段中指定。

版本字符串可以是npm理解的任何版本表达式,包括git和tarball URL。

以下代码仅根据命令器设置包的dependencies字段。 "dependencies": { "commander": "1.2.x"}

devDependencies

要包括仅用于测试和开发的包的依赖关系,使用devDependencies字段。 "devDependencies": { "mocha": "~1.8.1"} 开发依赖可以自动添加到package.json文件中。

为此,请将—save-dev标志附加到npm install命令。 npm install mocha --save-dev

可选依赖关系

使用可选的依赖项,npm将继续,尽管它们不存在。可选依赖项列在optionalDependencies字段中。

通过为npm install指定 --save-optional 标志,可以在安装期间将可选依赖性添加到package.json文件。

要加载可选的包,可使用 try…catch if 语句。

下面的代码假设 commander 是一个可选的依赖。

如果commander不存在,require()函数会抛出一个异常,然后将其封装在try…catch 语句中。

在使用之前检查commander是否具有定义的值。

  1. var commander;
  2.  
  3. try {
  4. commander = require("commander");
  5. } catch (exception) {
  6. commander = null;
  7. }
  8.  
  9. if (commander) {
  10. // do something with commander
  11. }
  12.  

engines

engines字段指定模块的node版本和npm。 "engines": {"node": ">=0.10.12", "npm": "1.2.x"}

scripts

scripts字段(如果存在)包含npm命令到脚本命令的映射。脚本命令在外部shell进程中运行。它们可以是任何可执行的命令。两个最常用的命令是start和test。

start命令启动你的应用程序,并测试运行一个或多个应用程序的test脚本。

  1. "scripts": {
  2. "start": "node server.js",
  3. "test": "echo \"message\" && exit 1"
  4. }

要执行start和test命令,只需将命令名传递给npm。 $ npm test

其他字段

你可以在homepage字段中列出项目的主页,在license字段中列出软件许可证类型,以及在repository字段中列出项目源代码的存储库。

获取有关package.json文件的更多信息,可发出命令 npm help json