package.json(1)
借此篇文章回顧一下package.json裏面的配置和相關文件,依賴需求的位置。
對package.json的理解和學習
一、初步理解
1. npm安裝package.json時 直接轉到當前項目目錄下用命令npm install 或npm install --save-dev安裝即可,自動將package.json中的模塊安裝到node-modules文件夾下 2. package.json 中添加中文註釋會編譯出錯3. 每個項目的根目錄下面,一般都有一個package.json文件,定義了這個項目所需要的各種模塊,以及項目的配置信息(比如名稱、版本、許可證等元數據)。npm install 命令根據這個配置文件,自動下載所需的模塊,也就是配置項目所需的運行和開發環境。
4. package.json文件可以手工編寫,也可以使用npm init命令自動生成。
註意:npm init 時,用戶需回答一些問題,然後在當前目錄生成一個基本的package.json文件。所有問題之中,只有項目名稱(name)和項目版本(version)是必填的,其他都是選填的。 二、進一步理解 (完整的字段說明:http://www.mujiang.info/translation/npmjs/files/package.json.html 中文版) 以下是根據 創建vue項目的時候 npm init自動生成的package.json做詳細的理解 1.下面是最簡單的的一個package.json 文件(只有兩個數據,項目名稱和項目版本,他們都是必須的,如果沒有就無法install) 1 2 3 4{
"name"
:
"kocla_test"
,
"version"
:
"1.0.0"
,
}
2.scripts
指定了運行腳本命令的npm命令行縮寫,比如start指定了運行npm run start時,所要執行的命令。
下面的設置指定了npm run dev、npm run bulid、npm run unit、npm run test、npm run lint時,所要執行的命令。
1 2 3 4 5 6 7"scripts"
: {
"dev"
:
"node build/dev-server.js"
,
"build"
:
"node build/build.js"
,
"unit"
:
"cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run"
,
"test"
:
"npm run unit"
,
"lint"
:
"eslint --ext .js,.vue src test/unit/specs"
},
3 dependencies,devDependencies
dependencies和devDependencies兩項,分別指定了項目運行所依賴的模塊、項目開發所需要的模塊。它們都指向一個對象,該對象的各個成員,分別由模塊名和對應的版本要去組成,表示依賴的模塊及其版本範圍
--save參數表示將該模塊寫入dependencies屬性,
--save-dev表示將該模塊寫入devDependencies屬性。
"dependencies"
: {
"vue"
:
"^2.2.2"
,
"vue-router"
:
"^2.2.0"
},
"devDependencies"
: {
"autoprefixer"
:
"^6.7.2"
,
"babel-core"
:
"^6.22.1"
,
"babel-eslint"
:
"^7.1.1"
,
"babel-loader"
:
"^6.2.10"
,
"babel-plugin-transform-runtime"
:
"^6.22.0"
,
"babel-preset-env"
:
"^1.2.1"
,
"babel-preset-stage-2"
:
"^6.22.0"
,
"babel-register"
:
"^6.22.0"
,
"chalk"
:
"^1.1.3"
,
}
4、config字段
config字段用於向環境變量輸出值。
1 2 3 4 5{
"name"
:
"foo"
,
"config"
: {
"port"
:
"8080"
},
"scripts"
: {
"start"
:
"node server.js"
}
}
5.engines 字段
指明了該項目所需要的node.js版本
1
2
3
4
"engines"
: {
"node"
:
">= 4.0.0"
,
"npm"
:
">= 3.0.0"
},
6.bin
許多包有一個或多個可執行文件希望被安裝到系統路徑。在npm下要這麽做非常容易(事實上,npm就是這麽運行的)。
這需要在你的package.json中提供一個bin字段,它是一個命令名和本地文件名的映射。在安裝時,如果是全局安裝,npm將會使用符號鏈接把這些文件鏈接到prefix/bin,如果是本地安裝,會鏈接到./node_modules/.bin/。
比如,要使用myapp作為命令時可以這麽做:
{ "bin" : { "myapp" : "./cli.js" } }
這麽一來,當你安裝myapp,npm會從cli.js文件創建一個到/usr/local/bin/myapp的符號鏈接(這使你可以直接在命令行執行myapp)
package.json(1)