NPM安裝使用,以及package.json解釋

NPM 是什么?

  • 允許用戶從NPM服務(wù)器下載別人編寫的第三方包到本地使用。
  • 允許用戶從NPM服務(wù)器下載并安裝別人編寫的命令行程序到本地使用。
  • 允許用戶將自己編寫的包或命令行程序上傳到NPM服務(wù)器供別人使用。

1、下載安裝Node.js

$ npm -v  //檢查版本,出現(xiàn)版本提示表示成功
3.10.10

2、版本檢查更新

$ sudo npm install npm -g

3、安裝模塊

$ npm install 模塊名

以下實(shí)例,使用 npm 命令安裝Node.js markdown轉(zhuǎn)HTML模塊markdown-it:

$ npm install markdown-it //從NPM中下載模塊名為markdown-it
安裝模塊.png

安裝好之后,markdown-it包就放在了工程目錄下的 node_modules 目錄中,在代碼中只需要通require('markdown-it') 的方式就好。

var MarkdownIt = require('markdown-it')

當(dāng)然每個(gè)模塊的使用方法都有一點(diǎn)點(diǎn)區(qū)別,如markdown-it是這樣的

markdown-it包使用.png

4、全局安裝、本地安裝

npm 的包安裝分為本地安裝、全局安裝兩種,從命令行來看,差別只是有沒有-g而已,比如

npm install markdown-it      //本地安裝
npm install markdown-it -g   //全局安裝

本地安裝

1、 將安裝包放在 ./node_modules 下(運(yùn)行 npm 命令時(shí)所在的目錄),如果沒有 node_modules 目錄,會在當(dāng)前執(zhí)行 npm 命令的目錄下生成node_modules 目錄。
2、可以通過 require() 來引入本地安裝的包。

全局安裝

1、 將安裝包放在 /usr/local 下或者你 node 的安裝目錄。
2、 可以直接在命令行里使用。

提高安裝速度

運(yùn)行
$ npm config set registry https://registry.npm.taobao.org/
---------------------------------------------------------
恢復(fù)原樣
$ npm config delete registry

5、查看安裝路徑

$ npm root //查看當(dāng)前包的安裝路徑
$ npm root -g //查看全局的包的安裝路徑
路徑.png

6、查看安裝信息

$ npm list -g 
所有全局安裝的模塊.png

7、使用 package.json

命令行方式創(chuàng)建package.json

$ npm init //生成一個(gè)package.json

這個(gè)命令采用互動方式,要求用戶回答一些問題,然后在當(dāng)前目錄生成一個(gè)基本的package.json文件。所有問題之中,只有項(xiàng)目名稱(name)和項(xiàng)目版本(version)是必填的,其他都是選填的。

7.1、單獨(dú)安裝xxx模塊(npm install)

$ npm install xxx --save //將該模塊寫入dependencies屬性
$ npm install xxx --save-dev //將該模塊寫入devDependencies屬性。

7.2、卸載本地包(npm uninstall)

$ npm uninstall xxx //你可以將node_modules目錄下的某個(gè)依賴包移除
$ npm uninstall --save xxx //從dependencies(依賴)中移除
$ npm uninstall --save-dev xxx //從devDependencies中移除

7.3、完整的package.json

{
  "name": "Hello World",  //name屬性就是你的模塊名稱
  "version": "0.0.1", //version必須可以被npm依賴的一個(gè)node-semver模塊解析
  "author": "張三",  //"author"是一個(gè)碼農(nóng)
  "description": "第一個(gè)node.js程序", //一個(gè)描述,方便別人了解你的模塊作用,搜索的時(shí)候也有用。
  "mian":"index.js", //main屬性指定了程序的主入口文件.
  "keywords":["node.js","javascript"],  //一個(gè)字符串?dāng)?shù)組,方便別人搜索到本模塊
  "repository": { //指定一個(gè)代碼存放地址,對想要為你的項(xiàng)目貢獻(xiàn)代碼的人有幫助。
    "type": "git",
    "url": "https://path/to/url"
  },
  "license":"MIT", //你應(yīng)該為你的模塊制定一個(gè)協(xié)議,讓用戶知道他們有何權(quán)限來使用你的模塊,以及使用該模塊有哪些限制,如BSD-3-Clause 或 MIT之類的協(xié)議
  "engines": {"node": "0.10.x"},
  "bugs":{ //填寫一個(gè)bug提交地址或者一個(gè)郵箱,被你的模塊坑到的人可以通過這里吐槽
    "url":"https://github.com/luoshushu",
    "email":"bug@example.com"
    }, 
  "contributors":[{"name":"李四","email":"lisi@example.com"}], // "contributors"是一個(gè)碼農(nóng)數(shù)組。
  "scripts": { //指定了運(yùn)行腳本命令的npm命令行縮寫。比如:輸入npm run start時(shí),所要執(zhí)行的命令是node index.js。
    "start": "node index.js"
  },
  "dependencies": { //指定了項(xiàng)目運(yùn)行所依賴的模塊
    "express": "latest",
    "mongoose": "~3.8.3",
    "handlebars-runtime": "~1.0.12",
    "express3-handlebars": "~0.5.0",
    "MD5": "~1.2.0"
  },
  "devDependencies": { //指定項(xiàng)目開發(fā)所需要的模塊
    "bower": "~1.2.8",
    "grunt": "~0.4.1",
    "grunt-contrib-concat": "~0.3.0",
    "grunt-contrib-jshint": "~0.7.2",
    "grunt-contrib-uglify": "~0.2.7",
    "grunt-contrib-clean": "~0.5.0",
    "browserify": "2.36.1",
    "grunt-browserify": "~1.3.0",
  }
}

ps:package.json具體解釋請看阮一峰的教程

7.4、.gitignore 文件

作用:

在git中如果想忽略掉某個(gè)文件,不讓這個(gè)文件提交到版本庫中,可以使用修改 .gitignore 文件的方法。

這個(gè)文件每一行保存了一個(gè)匹配的規(guī)則例如:

# 此為注釋 – 將被 Git 忽略
*.a       # 忽略所有 .a 結(jié)尾的文件
!lib.a    # 但 lib.a 除外
/TODO     # 僅僅忽略項(xiàng)目根目錄下的 TODO 文件,不包括 subdir/TODO
build/    # 忽略 build/ 目錄下的所有文件
doc/*.txt # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt
node_modules被忽略.png

上圖:

1、上傳某個(gè)項(xiàng)目到Github,在當(dāng)前文件下新建文件.gitgnore,內(nèi)容為node_modules。作用:不會把node_modules文件夾一起上傳。
2、反之從Github上下載到本地,需要下載node_modules文件,直接在命令行輸入:npm install 即可正常使用。

最后注意:中文命名就是個(gè)萬年深坑。


參考:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,750評論 1 375
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,703評論 2 380

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