npm中package.json详解

来源:互联网 发布:如何开通淘宝达人 编辑:程序博客网 时间:2024/05/01 00:03

通常我们使用npm init命令来创建一个npm程序时,会自动生成一个package.json文件。package.json文件会描述这个NPM包的所有相关信息,包括作者、简介、包依赖、构建等信息,格式是严格的JSON格式。

 

属性介绍

name

nameversion是package.json中最重要的两个字段,也是发布到NPM平台上的唯一标识,如果没有正确设置这两个字段,包就不能发布和被下载。

version

包的版本号。如"1.0.0"。

description

包的描述信息,将会在npm search的返回结果中显示,以帮助用户选择合适的包。

keywords

包的关键词信息,是一个字符串数组,同上也将显示在npm search的结果中。

homepage

包的主页地址。

bugs

包的bug跟踪主页地址。

license

包的开源协议名称。

author

包的作者。

contributors, maintainers

包的贡献者,是一个数组。

files(较少用)

包所包含的所有文件,可以取值为文件夹。通常我们还是用.npmignore来去除不想包含到包里的文件。

main

包的入口文件。

bin(较少用)

如果你的包里包含可执行文件,通过设置这个字段可以将它们包含到系统的PATH中,这样直接就可以运行,很方便。

man(较少用)

为系统的man命令提供帮助文档。帮助文件的文件名必须以数字结尾,如果是压缩的,需要以.gz结尾。

[html] view plain copy
  1. "man": ["./man/foo.1", "./man/bar.1", "./man/foo.2" ]  

directories(较少用)

CommonJS包所要求的目录结构信息,展示项目的目录结构信息。字段可以是:lib, bin, man, doc, example。值都是字符串。

repository

包的仓库地址。

[html] view plain copy
  1. "repository": {  
  2.     "type": "git",  
  3.     "url": "git+https://github.com/rainnaZR/es6-react.git"  
  4.   },  

scripts

通过设置这个可以使NPM调用一些命令脚本,封装一些功能。

[html] view plain copy
  1. "scripts": {"start": "babel-node src/pages/index.js",  
  2.     "build": "webpack --config config/webpack.config.js",  
  3.     "watch": "webpack-dev-server --config config/webpack.config.js --hot --inline --progress"  
  4.   }  

config

添加一些设置,可以供scripts读取用,同时这里的值也会被添加到系统的环境变量中。

[html] view plain copy
  1. "config": {  
  2.   "port": "8080"  
  3. }  

npm start的时候会读取到npm_package_config_port环境变量。

dependencies

指定依赖的其它包,这些依赖是指包发布后正常执行时所需要的,也就是线上需要的包。使用下面的命令来安装:

[html] view plain copy
  1. npm install --save packageName  

如果是开发中依赖的包,可以在devDependencies设置。

devDependencies

这些依赖只有在开发时候才需要。使用下面的命令来安装:

[html] view plain copy
  1. npm install --save-dev packageName   

peerDependencies

相关的依赖,如果你的包是插件,而用户在使用你的包时候,通常也会需要这些依赖(插件),那么可以将依赖列到这里。

karma, 它的package.json中有设置,依赖下面这些插件:

[html] view plain copy
  1. "peerDependencies": {  
  2.   "karma-jasmine": "~0.1.0",  
  3.   "karma-requirejs": "~0.2.0",  
  4.   "karma-coffee-preprocessor": "~0.1.0",  
  5.   "karma-html2js-preprocessor": "~0.1.0",  
  6.   "karma-chrome-launcher": "~0.1.0",  
  7.   "karma-firefox-launcher": "~0.1.0",  
  8.   "karma-phantomjs-launcher": "~0.1.0",  
  9.   "karma-script-launcher": "~0.1.0"  
  10. }  

bundledDependencies

绑定的依赖包,发布的时候这些绑定包也会被一同发布。

optionalDependencies(较少用)

即使这些依赖没有,也可以正常安装使用。

engines(较少用)

指定包运行的环境。

[html] view plain copy
  1. "engines": {  
  2.   "node": ">=0.10.3 < 0.12",  
  3.   "npm": "~1.0.20"  
  4. }  

os(较少用)

指定你的包可以在哪些系统平台下运行。

[html] view plain copy
  1. "os": [ "darwin", "linux", "!win32" ]  

cpu(较少用)

可以指定包运行的cpu架构。

private

设为true这个包将不会发布到NPM平台下。

publishConfig(较少用)

这个字段用于设置发布时候的一些设定。尤其方便你希望发布前设定指定的tagregistry

完整配置例子如下:

[html] view plain copy
  1. {  
  2.   "name": "react",  
  3.   "version": "1.0.0",  
  4.   "description": "Command line instructions",  
  5.   "keywords": [  
  6.     "react",  
  7.     "es6",  
  8.     "react with es6"  
  9.   ],  
  10.   "homepage": "https://github.com/rainnaZR/es6-react",  
  11.   "bugs": {  
  12.     "url": "https://github.com/rainnaZR/es6-react",  
  13.     "email": "111@163.com"  
  14.   },  
  15.   "license": "ISC",  
  16.   "author": "ZRainna",  
  17.   "main": "src/pages/index.js",  
  18.   "directories": {  
  19.     "tests": "tests",  
  20.     "lib":"lib",  
  21.     "docs":"docs"  
  22.   },  
  23.   "repository": {  
  24.     "type": "git",  
  25.     "url": "git+https://github.com/rainnaZR/es6-react.git"  
  26.   },  
  27.   "scripts": {"start": "babel-node src/pages/index.js",  
  28.     "build": "webpack --config config/webpack.config.js",  
  29.     "watch": "webpack-dev-server --config config/webpack.config.js --hot --inline --progress"  
  30.   },  
  31.   "babel": {  
  32.     "presets": [  
  33.       "es2015-node5"  
  34.     ]  
  35.   },  
  36.   "devDependencies": {  
  37.     "webpack": "^1.13.2",  
  38.     "webpack-dev-server": "^1.16.1"  
  39.   },  
  40.   "dependencies": {  
  41.     "babel-loader": "^6.2.5",  
  42.     "babel-preset-es2015": "^6.14.0",  
  43.     "babel-preset-react": "^6.11.1",  
  44.     "react": "^15.3.2",  
  45.     "react-dom": "^15.3.2",  
  46.     "react-redux": "^4.4.5",  
  47.     "react-router": "^2.8.1",  
  48.     "redux": "^3.6.0"  
  49.   }  
  50. }  

转自(http://www.cnblogs.com/zourong/p/5943224.html)
0 0
原创粉丝点击