package.json 詳解



package.json文件描述了一個NPM包的所有相關信息,包括作者、簡介、包依賴、

構建等信息。格式必須是嚴格的JSON格式。

通常我們在創建一個NPM程序時,可以使用npm init命令,通過交互式的命令,
自動生成一個package.json文件,裏面包含了常用的一些字段信息,但遠不止這
麼簡單。通過完善package.json文件,我們可以讓npm命令更好地爲我們服務。

如果你有個新的項目,還沒有下載過任何的npm包,而需要的npm包跟前一個項目差不多。
那麼,你可以把這個項目裏面的package.jn拷貝到當前項目根目錄。然後npm install,
\所有的依賴包就會自動的下載完畢了!

{
  //必須,標識;不能包含node,js等字段;將會是url的一部分
  //命令行的參數,目錄名。所以不能移點號和下劃線開頭
  "name": "webpack-react",
  //name和version組成的標識是唯一的,改變包的時候應該同時改變version
  "version": "1.0.0",
  //簡介,方便npm search中查找
  "description": "",
  //程序入口模塊的id,調用此包時,返回的是該模塊(index)的導出(export)
  "main": "server.js",
  /*    *repository: 代碼存放地址  可選字段 */
  "repository": "git://github.com/panqianjin/hello.git",
  //同description 可選字段
  "keywords": [ "test",  "cortex" ],
  //普通licesnse可直接使用 你應該要指定一個許可證,讓人知道使用的權利和限制的。
//  如果你有更復雜的許可條件,或者想要提供給更多地細節,可以這樣:
  /* "licenses" : [
    { "type" : "MyLicense"
    , "url" : "http://github.com/owner/project/path/to/license"
    }
  ]
*/
  "license": "MIT",
  //當前包所依賴的其他包。即生產環境
  "dependencies": {
    "babel-preset-react": "^6.5.0",
    "react": "^0.14.7",
    "react-dom": "^0.14.7",
    "webpack": "^1.12.15"
  },
  // 外部測試或文檔框架。即測試環境依賴
//  如果只需要下載使用某些模塊,而不下載這些模塊的測試和文檔框架,
//  放在這個下面比較不錯
  "devDependencies": {
    "babel-core": "^6.7.2",
    "babel-loader": "^6.2.4",
    "babel-preset-es2015": "^6.6.0",
    "babel-preset-stage-1": "^6.5.0",
    "css-loader": "^0.23.1",
    "file-loader": "^0.8.5",
    "html-webpack-plugin": "^2.14.0",
    "less-loader": "^2.2.3",
    "react-hot-loader": "^1.3.0",
    "style-loader": "^0.13.0",
    "webpack-dev-server": "^1.14.1"
  },
  //engines: 既可以指定node版本也可以指定npm版本
  "engines": {
    "node": ">=0.10.0"
  },
  // *script 由腳本命令組成的hash對象在包不同生命週期運行   *
  // key 時生命週期事件,value時要運行的命令
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start_html":"webpack --config webpack.html.config.js",
    "start_es6":"webpack --config webpack.es6.config.js",
    "start_react":"webpack --config webpack.react.config.js",
    "start_todo":"webpack --config webpack.todo.config.js",
    "build":"webpack-dev-server --port 3000 --hot --inline",
    "build_es6":"webpack-dev-server --port 4000 --hot --inline --config webpack.es6.config.js",
    "build_todo":"webpack-dev-server --port 4000 --hot --inline --config webpack.todo.config.js"
  },
  /*    *homepage:項目官網   可選字段*/
  "homepage": "http://github.com/panqianjin/hello"
  "author": {
    "name": "qianjin.pan",
    "email": "[email protected]"
  },
  //問題追蹤系統的url或者郵箱 可選字段
  "bugs": {
    "url": "http://github.com/panqianjin/hello/issues"
  },
//  指定你的包可以在哪些系統平臺下運行
  "os": [ "darwin", "linux", "!win32" ],
//  可以指定包運行的cpu架構
  "cpu": [ "x64", "!arm" ]
}


/*
"scripts": { "start": "node server.js" } 如果在項目根目錄下含有server.js
文件,則NPM會自動設置此值。

"scripts": { "preinstall": "node-gyp rebuild" }
如果在項目根目錄下含有binding.gyp文件,則NPM會自動設置此值

*/

package.json文件描述了一個NPM包的所有相關信息,包括作者、簡介、包依賴、構建等信息。格式必須是嚴格的JSON格式。

通常我們在創建一個NPM程序時,可以使用npm init命令,通過交互式的命令,
自動生成一個package.json文件,裏面包含了常用的一些字段信息,但遠不止這
麼簡單。通過完善package.json文件,我們可以讓npm命令更好地爲我們服務。

如果你有個新的項目,還沒有下載過任何的npm包,而需要的npm包跟前一個項目差不多。
那麼,你可以把這個項目裏面的package.jn拷貝到當前項目根目錄。然後npm install,
\所有的依賴包就會自動的下載完畢了!

{
  //必須,標識;不能包含node,js等字段;將會是url的一部分
  //命令行的參數,目錄名。所以不能移點號和下劃線開頭
  "name": "webpack-react",
  //name和version組成的標識是唯一的,改變包的時候應該同時改變version
  "version": "1.0.0",
  //簡介,方便npm search中查找
  "description": "",
  //程序入口模塊的id,調用此包時,返回的是該模塊(index)的導出(export)
  "main": "server.js",
  /*    *repository: 代碼存放地址  可選字段 */
  "repository": "git://github.com/panqianjin/hello.git",
  //同description 可選字段
  "keywords": [ "test",  "cortex" ],
  //普通licesnse可直接使用 你應該要指定一個許可證,讓人知道使用的權利和限制的。
//  如果你有更復雜的許可條件,或者想要提供給更多地細節,可以這樣:
  /* "licenses" : [
    { "type" : "MyLicense"
    , "url" : "http://github.com/owner/project/path/to/license"
    }
  ]
*/
  "license": "MIT",
  //當前包所依賴的其他包。即生產環境
  "dependencies": {
    "babel-preset-react": "^6.5.0",
    "react": "^0.14.7",
    "react-dom": "^0.14.7",
    "webpack": "^1.12.15"
  },
  // 外部測試或文檔框架。即測試環境依賴
//  如果只需要下載使用某些模塊,而不下載這些模塊的測試和文檔框架,
//  放在這個下面比較不錯
  "devDependencies": {
    "babel-core": "^6.7.2",
    "babel-loader": "^6.2.4",
    "babel-preset-es2015": "^6.6.0",
    "babel-preset-stage-1": "^6.5.0",
    "css-loader": "^0.23.1",
    "file-loader": "^0.8.5",
    "html-webpack-plugin": "^2.14.0",
    "less-loader": "^2.2.3",
    "react-hot-loader": "^1.3.0",
    "style-loader": "^0.13.0",
    "webpack-dev-server": "^1.14.1"
  },
  //engines: 既可以指定node版本也可以指定npm版本
  "engines": {
    "node": ">=0.10.0"
  },
  // *script 由腳本命令組成的hash對象在包不同生命週期運行   *
  // key 時生命週期事件,value時要運行的命令
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start_html":"webpack --config webpack.html.config.js",
    "start_es6":"webpack --config webpack.es6.config.js",
    "start_react":"webpack --config webpack.react.config.js",
    "start_todo":"webpack --config webpack.todo.config.js",
    "build":"webpack-dev-server --port 3000 --hot --inline",
    "build_es6":"webpack-dev-server --port 4000 --hot --inline --config webpack.es6.config.js",
    "build_todo":"webpack-dev-server --port 4000 --hot --inline --config webpack.todo.config.js"
  },
  /*    *homepage:項目官網   可選字段*/
  "homepage": "http://github.com/panqianjin/hello"
  "author": {
    "name": "qianjin.pan",
    "email": "[email protected]"
  },
  //問題追蹤系統的url或者郵箱 可選字段
  "bugs": {
    "url": "http://github.com/panqianjin/hello/issues"
  },
//  指定你的包可以在哪些系統平臺下運行
  "os": [ "darwin", "linux", "!win32" ],
//  可以指定包運行的cpu架構
  "cpu": [ "x64", "!arm" ]
}


/*
"scripts": { "start": "node server.js" } 如果在項目根目錄下含有server.js
文件,則NPM會自動設置此值。

"scripts": { "preinstall": "node-gyp rebuild" }
如果在項目根目錄下含有binding.gyp文件,則NPM會自動設置此值

*/
發佈了34 篇原創文章 · 獲贊 33 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章