package.json配置簡介

package.json配置文件入門簡介

用過npm的小伙伴都知道,我們可以通過npm init快速的創(chuàng)建一個package.json文件

image

如果沒有特殊要求国觉,一路回車下去就可以了普办。

最終會在當前的文件夾中看見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通過字面意思即可理解,

需要說明的是,

  1. version標注了當前項目的版本號蝗蛙,如果是私有項目,不發(fā)布到倉庫(repository),此項關(guān)鍵字可以不用變更为狸;

  2. main是我們模塊或者是項目的入口文件歼郭,有且只有一個文件,文件的路徑是相對項目的根目錄辐棒;

  3. 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"
  }
}

這里的版本號有多種形式

  1. 明確版本號驻债,即 "2.0.1"
  2. 版本號區(qū)間乳规,有多種寫法,支持比較表達式以及或運算合呐,即 "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
  3. 模糊匹配
  • 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官方文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末犁珠,一起剝皮案震驚了整個濱河市逻炊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌犁享,老刑警劉巖余素,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異炊昆,居然都是意外死亡桨吊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門凤巨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來视乐,“玉大人,你說我怎么就攤上這事敢茁∮拥恚” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵彰檬,是天一觀的道長伸刃。 經(jīng)常有香客問我,道長逢倍,這世上最難降的妖魔是什么捧颅? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮瓶堕,結(jié)果婚禮上隘道,老公的妹妹穿的比我還像新娘。我一直安慰自己郎笆,他們只是感情好谭梗,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宛蚓,像睡著了一般激捏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凄吏,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天远舅,我揣著相機與錄音,去河邊找鬼痕钢。 笑死图柏,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的任连。 我是一名探鬼主播蚤吹,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了裁着?” 一聲冷哼從身側(cè)響起繁涂,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎二驰,沒想到半個月后扔罪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡桶雀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年矿酵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矗积。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡坏瘩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出漠魏,到底是詐尸還是另有隱情,我是刑警寧澤妄均,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布柱锹,位于F島的核電站,受9級特大地震影響丰包,放射性物質(zhì)發(fā)生泄漏禁熏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一邑彪、第九天 我趴在偏房一處隱蔽的房頂上張望瞧毙。 院中可真熱鬧,春花似錦寄症、人聲如沸宙彪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽释漆。三九已至,卻和暖如春篮迎,著一層夾襖步出監(jiān)牢的瞬間男图,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工甜橱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逊笆,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓岂傲,卻偏偏與公主長得像难裆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子譬胎,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理差牛,服務(wù)發(fā)現(xiàn)命锄,斷路器,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 原文鏈接:http://www.mujiang.info/translation/npmjs/files/pack...
    R_X閱讀 1,021評論 0 1
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,504評論 25 707
  • 什么是 NPM npm之于Node偏化,就像pip之于Python,gem之于Ruby,composer之于PHP脐恩。 ...
    ihoey閱讀 6,248評論 2 36
  • 市井擾幃屏,酣然驚夢卿侦讨。嗔責賠深寐驶冒,笑道邂諳鈴。
    過境風閱讀 268評論 0 2