package.json 檔案詳解
package.json 檔案 例項
{ "name": "systemName", "version": "1.0.0", "description": "系統描述", "author": "天馬行空", "private": true, "scripts": { "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "start": "npm run dev", "e2e": "node test/e2e/runner.js", "test": "npm run e2e", "build": "node build/build.js" }, "dependencies": { "vue": "^2.5.2", "vue-router": "^3.0.1" }, "devDependencies": { "autoprefixer": "^7.1.2", "babel-core": "^6.22.1", "babel-helper-vue-jsx-merge-props": "^2.0.3", "babel-loader": "^7.1.1", "webpack-dev-server": "^2.9.1", "webpack-merge": "^4.1.0" }, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" }, "browserslist": [ "> 1%", "last 2 versions", "not ie <= 8" ] }
欄位描述
scripts欄位
scripts
指定了執行指令碼命令的npm命令列縮寫,比如start指定了執行npm run start
時,所要執行的命令。
下面的設定指定了npm run preinstall
、npm run postinstall
、npm run start
、npm run test
時,所要執行的命令。
"scripts": { "preinstall": "echo here it comes!", "postinstall": "echo there it goes!", "start": "node index.js", "test": "tap test/*.js" }
dependencies欄位
dependencies
欄位指定了專案執行所依賴的模組
devDependencies欄位
devDependencies
指定專案開發所需要的模組。
它們都指向一個物件。該物件的各個成員,分別由模組名和對應的版本要求組成,表示依賴的模組及其版本範圍。
{
"devDependencies": {
"browserify": "~13.0.0",
"karma-browserify": "~5.0.1"
}
}
注:通過
$ npm install
命令可以根據package.json 所依賴的模組。
bin欄位
bin項用來指定各個內部命令對應的可執行檔案的位置。
"bin": {
"someTool": "./bin/someTool.js"
}
上面程式碼指定,someTool 命令對應的可執行檔案為 bin 子目錄下的 someTool.js。Npm會尋找這個檔案,在node_modules/.bin/
目錄下建立符號連結。在上面的例子中,someTool.js會建立符號連結npm_modules/.bin/someTool
。由於node_modules/.bin/
目錄會在執行時加入系統的PATH變數,因此在執行npm時,就可以不帶路徑,直接通過命令來呼叫這些指令碼。
因此,像下面這樣的寫法可以採用簡寫。
scripts: {
start: './node_modules/someTool/someTool.js build'
}
// 簡寫為
scripts: {
start: 'someTool build'
}
所有node_modules/.bin/
目錄下的命令,都可以用npm run [命令]
的格式執行。在命令列下,鍵入npm run
,然後按tab鍵,就會顯示所有可以使用的命令。
main欄位
main
欄位指定了載入的入口檔案,require('moduleName')
就會載入這個檔案。這個欄位的預設值是模組根目錄下面的index.js
。
config 欄位
config
欄位用於新增命令列的環境變數。
下面是一個package.json
檔案。
{
"name" : "foo",
"config" : { "port" : "8080" },
"scripts" : { "start" : "node server.js" }
}
然後,在server.js
指令碼就可以引用config
欄位的值。
http
.createServer(...)
.listen(process.env.npm_package_config_port)
使用者執行npm run start
命令時,這個指令碼就可以得到值。
$ npm run start