package.json配置文件入門簡介
用過npm的小伙伴都知道,我們可以通過npm init快速的創(chuàng)建一個package.json文件
如果沒有特殊要求国觉,一路回車下去就可以了普办。
最終會在當前的文件夾中看見package.json.
其中的內(nèi)容如圖一所示
接下來揭糕,我們先看一個常用的例子
{
"name": "demo",
"version": "1.0.0",
"description": "這里是介紹",
"main": "index.js",
"scripts": {
"build": "webpack --config webpack.config.js",
"sync": "gulp sync",
"syncbuild": "gulp sync && webpack --config webpack.config.js"
},
"author": "will",
"license": "ISC",
"dependencies": {
"react": "16.*"
},
"devDependencies": {
"babel": "^6.23.0",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-polyfill": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-es2015-loose": "^8.0.0",
"eslint": "^4.10.0",
"gulp": "^3.9.1",
"webpack": "^3.8.1"
}
}
我們來詳細說明一下文件中各個字段的含義與用法
簡單關(guān)鍵字說明
name, version, description, main, author, license通過字面意思即可理解,
需要說明的是,
version標注了當前項目的版本號蝗蛙,如果是私有項目,不發(fā)布到倉庫(repository),此項關(guān)鍵字可以不用變更为狸;
main是我們模塊或者是項目的入口文件歼郭,有且只有一個文件,文件的路徑是相對項目的根目錄辐棒;
license是標注我們項目的許可證權(quán)限,如果是開源項目牍蜂,請參考阮一峰開源許可證教程漾根。
如果不想開源,可以使用
{ "license": "UNLICENSED" }
或者
{ "private": true }
重點關(guān)鍵字說明
scripts鲫竞,dependencies辐怕,devDependencies
首先我們來看看scripts
scripts是npm提供給我們運行shell命令的入口
{
"scripts": {
"build": "webpack --config webpack.config.js",
"sync": "gulp sync",
"syncbuild": "gulp sync && webpack --config webpack.config.js"
}
}
我們可以通過npm run build啟動webpack --config webpack.config.js
這條命令等同于在命令行中輸入webpack --config webpack.config.js
例子中syncbuild是前兩步的合并,build為編譯从绘,sync為同步文件
這里的key為npm run時接受的參數(shù)寄疏,value代表著需要運行shell命令
dependencies與devDependencies看起來差不多,他們都是標注項目的依賴列表
不同的是僵井,dependencies是項目運行時必要依賴陕截,而devDependencies是項目開發(fā)時所需依賴
明確了以上的不同,就可以很清晰知道把項目依賴放在哪里了
平時使用的時候我們會通過
npm i --save react
安裝依賴批什,此依賴會寫入dependencies列表
如需將依賴寫入devDependencies
npm i --save-dev react
這里還有一點需要注意农曲,我們的項目在發(fā)布后,他人在使用時默認會將dependencies列表的依賴全部安裝
npm i packagename
或者
npm i packagename --production
如果需要安裝開發(fā)環(huán)境
npm i packagename --dev
這樣會將項目的開發(fā)依賴包全部安裝到本地
依賴列表中版本號說明
首先來看一下npm官方給出的例子
{
"dependencies": {
"foo": "1.0.0 - 2.9999.9999",
"bar": ">=1.0.2 <2.1.2",
"baz": ">1.0.2 <=2.3.4",
"boo": "2.0.1",
"qux": "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0",
"asd": "http://asdf.com/asdf.tar.gz",
"til": "~1.2",
"elf": "~1.2.3",
"two": "2.x",
"thr": "3.3.x",
"lat": "latest",
"dyl": "file:../dyl"
}
}
這里的版本號有多種形式
- 明確版本號驻债,即 "2.0.1"
- 版本號區(qū)間乳规,有多種寫法,支持比較表達式以及或運算合呐,即 "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
- 模糊匹配
- 2.x 會匹配所有2.0.0到3.0.0之間的版本暮的,比如2.x會匹配2.0.0 和 2.3.5,但不包括3.0.0
- ~ 會匹配最近的小版本依賴包淌实,比如~1.1.3會匹配所有1.1.x版本冻辩,但是不包括1.1.0
- ^ 會匹配最新的大版本依賴包,比如^2.2.2會匹配所有2.x.x的包翩伪,包括2.3.0微猖,但是不包括3.0.0
- * 會匹配所有版本
- "" 會匹配所有版本
- latest 會匹配一個給定的特殊tag版本
- http 或者 git 路徑 會匹配給定url地址
- 本地路徑會匹配本地文件包,不過此路徑使用需要先初始化本地依賴包
git路徑的格式如下
<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]
<protocol>為枚舉類型缘屹,git, git+ssh, git+http, git+https, git+file.
git+ssh://git@github.com:npm/npm.git#v1.0.27
git+ssh://git@github.com:npm/npm#semver:^5.0
git+https://isaacs@github.com/npm/npm.git
git://github.com/npm/npm.git#v1.0.27
本文整理了package.json常見的配置項凛剥,如有紕漏或錯誤,請予以指正轻姿。
參考文檔 package.json官方文檔