Node.js 探索package.json

示例

一个package.json文件,通常存在于项目的根,包含有关您的应用程序或模块的元数据以及依赖关系列表运行时从NPM安装npm install。

在命令提示符下初始化package.json类型npm init。

要package.json使用默认值创建一个,请使用:

npm init --yes
# or
npm init -y

要安装软件包并保存以package.json使用:

npm install {package name} --save

您还可以使用简写形式:

 npm i -S {package name}

NPM别名-S来--save并-D给--save-dev于您的生产或开发的依赖关系分别保存。

该软件包将出现在您的依赖项中;如果您使用--save-dev而不是--save,则该软件包将显示在您的devDependencies中。

的重要属性package.json:

{
  "name": "module-name",
  "version": "10.3.1",
  "description": "An example module to illustrate the usage of a package.json",
  "author": "Your Name <your.name@example.org>",
  "contributors": [{
    "name": "Foo Bar",
    "email": "foo.bar@example.com"
  }],
  "bin": {
    "module-name": "./bin/module-name"
  },
  "scripts": {
    "test": "vows --spec --isolate",
    "start": "node index.js",
    "predeploy": "echo About to deploy",
    "postdeploy": "echo Deployed",
    "prepublish": "coffee --bare --compile --output lib/foo src/foo/*.coffee"
  },
  "main": "lib/foo.js",
  "repository": {
    "type": "git",
    "url": "https://github.com/username/repo"
  },
  "bugs": {
    "url": "https://github.com/username/issues"
  },
  "keywords": [
    "example"
  ],
  "dependencies": {
    "express": "4.2.x"
  },
  "devDependencies": {
    "assume": "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
  },
  "peerDependencies": {
    "moment": ">2.0.0"
  },
  "preferGlobal": true,
  "private": true,
  "publishConfig": {
    "registry": "https://your-private-hosted-npm.registry.domain.com"
  },
  "subdomain": "foobar",
  "analyze": true,
  "license": "MIT",
  "files": [
    "lib/foo.js"
  ]
}

有关一些重要属性的信息:

name

包裹的唯一名称,应小写。此属性是必需的,没有它,您的软件包将无法安装。

  1. 名称必须少于或等于214个字符。

  2. 名称不能以点或下划线开头。

  3. 新软件包名称中不得包含大写字母。

version

软件包的版本由语义版本控制(Semver)指定。假定版本号写为MAJOR.MINOR.PATCH,并且您递增:

  1. 进行不兼容的API更改时的主要版本

  2. 以向后兼容的方式添加功能时的MINOR版本

  3. 进行向后兼容的错误修复时的PATCH版本

description

项目说明。尽量使其简洁明了。

author

这个包的作者。

bin

一个对象,用于从包中公开二进制脚本。该对象假定键是二进制脚本的名称,而值是脚本的相对路径。

包含CLI(命令行界面)的程序包使用此属性。

script

公开其他npm命令的对象。该对象假定键是npm命令,值是脚本路径。运行npm run {command name}或时可以执行这些脚本npm run-script {command name}。

可以在没有相对路径的情况下调用包含命令行界面并本地安装的软件包。因此,无需致电./node-modules/.bin/mocha即可直接致电mocha。

main

包的主要入口点。调用require('{module name}')节点时,这将是所需的实际文件。

强烈建议要求主文件不会产生任何副作用。例如,要求主文件不应启动HTTP服务器或连接数据库。相反,您应该exports.init = function () {...}在主脚本中创建类似的内容。

keywords

一组描述您的包裹的关键字。这些将帮助人们找到您的包裹。

devDependencies

这些是仅用于开发和测试模块的依赖项。除非NODE_ENV=production已设置环境变量,否则将自动安装依赖项。如果是这种情况,您仍然可以使用npm install --dev

peerDependencies

如果使用的是此模块,则peerDependencies列出了必须与该模块一起安装的模块。例如,moment-timezone必须同时安装,moment因为它暂时是一个插件,即使它不是直接使用require("moment")。

preferGlobal

一个属性,指示希望使用全局安装此页面npm install -g {module-name}。包含CLI(命令行界面)的程序包使用此属性。

在所有其他情况下,您不应使用此属性。

publishConfig

publishConfig是具有配置值的对象,该配置值将用于发布模块。设置的配置值将覆盖默认的npm配置。

的最常见用法publishConfig是将软件包发布到私有npm注册表,因此,对于私有软件包,您仍然可以享受npm的好处。只需将您私有npm的URL设置为注册表项的值即可。

files

这是要包含在已发布程序包中的所有文件的数组。可以使用文件路径或文件夹路径。文件夹路径的所有内容都将包括在内。通过仅包括要分发的正确文件,这减小了程序包的总大小。该字段与.npmignore规则文件结合使用。

资源