http://javascript.ruanyifeng.com/nodejs/packagejson.html#toc7(copy)javascript
一般咱們使用npm init命令來建立一個npm程序時,會自動生成一個package.json
文件。package.json
文件會描述這個NPM包的全部相關信息,包括做者、簡介、包依賴、構建等信息,格式是嚴格的JSON格式。html
經常使用命令java
npm i --save packageName 安裝依賴包node
npm i --save-dev packageNamereact
npm i webpack@1.2.1 安裝指定版本的包,版本號用@符號鏈接linux
屬性介紹webpack
namegit
name
和version
是package.json中最重要的兩個字段,也是發佈到NPM平臺上的惟一標識,若是沒有正確設置這兩個字段,包就不能發佈和被下載。es6
versiongithub
包的版本號。如"1.0.0"。
description
包的描述信息,將會在npm search
的返回結果中顯示,以幫助用戶選擇合適的包。
keywords
包的關鍵詞信息,是一個字符串數組,同上也將顯示在npm search
的結果中。
homepage
包的主頁地址。
bugs
包的bug跟蹤主頁地址。
license
包的開源協議名稱。
author
包的做者。
contributors, maintainers
包的貢獻者,是一個數組。
files(較少用)
包所包含的全部文件,能夠取值爲文件夾。一般咱們仍是用.npmignore
來去除不想包含到包裏的文件。
main
包的入口文件。
bin(較少用)
若是你的包裏包含可執行文件,經過設置這個字段能夠將它們包含到系統的PATH
中,這樣直接就能夠運行,很方便。
man(較少用)
爲系統的man
命令提供幫助文檔。幫助文件的文件名必須以數字
結尾,若是是壓縮的,須要以.gz
結尾。
"man": ["./man/foo.1", "./man/bar.1", "./man/foo.2" ]
directories(較少用)
CommonJS包所要求的目錄結構信息,展現項目的目錄結構信息。字段能夠是:lib, bin, man, doc, example。值都是字符串。
repository
包的倉庫地址。
"repository": { "type": "git", "url": "git+https://github.com/rainnaZR/es6-react.git" },
scripts
經過設置這個可使NPM調用一些命令腳本,封裝一些功能。
"scripts": {"start": "babel-node src/pages/index.js", "build": "webpack --config config/webpack.config.js", "watch": "webpack-dev-server --config config/webpack.config.js --hot --inline --progress" }
config
添加一些設置,能夠供scripts
讀取用,同時這裏的值也會被添加到系統的環境變量中。
"config": { "port": "8080" }
npm start
的時候會讀取到npm_package_config_port
環境變量。
dependencies
指定依賴的其它包,這些依賴是指包發佈後正常執行時所須要的,也就是線上須要的包。使用下面的命令來安裝:
npm install --save packageName
若是是開發中依賴的包,能夠在devDependencies
設置。
devDependencies
這些依賴只有在開發時候才須要。使用下面的命令來安裝:
npm install --save-dev packageName
peerDependencies
相關的依賴,若是你的包是插件,而用戶在使用你的包時候,一般也會須要這些依賴(插件),那麼能夠將依賴列到這裏。
如karma
, 它的package.json
中有設置,依賴下面這些插件:
"peerDependencies": { "karma-jasmine": "~0.1.0", "karma-requirejs": "~0.2.0", "karma-coffee-preprocessor": "~0.1.0", "karma-html2js-preprocessor": "~0.1.0", "karma-chrome-launcher": "~0.1.0", "karma-firefox-launcher": "~0.1.0", "karma-phantomjs-launcher": "~0.1.0", "karma-script-launcher": "~0.1.0" }
bundledDependencies
綁定的依賴包,發佈的時候這些綁定包也會被一同發佈。
optionalDependencies(較少用)
即便這些依賴沒有,也能夠正常安裝使用。
engines(較少用)
指定包運行的環境。
"engines": { "node": ">=0.10.3 < 0.12", "npm": "~1.0.20" }
os(較少用)
指定你的包能夠在哪些系統平臺下運行。
"os": [ "darwin", "linux", "!win32" ]
cpu(較少用)
能夠指定包運行的cpu架構。
private
設爲true
這個包將不會發布到NPM平臺下。
publishConfig(較少用)
這個字段用於設置發佈時候的一些設定。尤爲方便你但願發佈前設定指定的tag
或registry
。
以下:
{
"name": "react",
"version": "1.0.0",
"description": "Command line instructions",
"keywords": [
"react",
"es6",
"react with es6"
],
"homepage": "https://github.com/rainnaZR/es6-react",
"bugs": {
"url": "https://github.com/rainnaZR/es6-react",
"email": "111@163.com"
},
"license": "ISC",
"author": "ZRainna",
"main": "src/pages/index.js",
"directories": {
"tests": "tests",
"lib":"lib",
"docs":"docs"
},
"repository": {
"type": "git",
"url": "git+https://github.com/rainnaZR/es6-react.git" }, "scripts": {"start": "babel-node src/pages/index.js", "build": "webpack --config config/webpack.config.js", "watch": "webpack-dev-server --config config/webpack.config.js --hot --inline --progress" }, "babel": { "presets": [ "es2015-node5" ] }, "devDependencies": { "webpack": "^1.13.2", "webpack-dev-server": "^1.16.1" }, "dependencies": { "babel-loader": "^6.2.5", "babel-preset-es2015": "^6.14.0", "babel-preset-react": "^6.11.1", "react": "^15.3.2", "react-dom": "^15.3.2", "react-redux": "^4.4.5", "react-router": "^2.8.1", "redux": "^3.6.0" } }