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
安裝好之后,markdown-it包就放在了工程目錄下的 node_modules 目錄中,在代碼中只需要通require('markdown-it') 的方式就好。
var MarkdownIt = require('markdown-it')
當(dāng)然每個(gè)模塊的使用方法都有一點(diǎn)點(diǎn)區(qū)別,如markdown-it是這樣的
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 //查看全局的包的安裝路徑
6、查看安裝信息
$ npm list -g
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
上圖:
1、上傳某個(gè)項(xiàng)目到Github,在當(dāng)前文件下新建文件.gitgnore,內(nèi)容為node_modules。作用:不會把node_modules文件夾一起上傳。
2、反之從Github上下載到本地,需要下載node_modules文件,直接在命令行輸入:npm install 即可正常使用。
最后注意:中文命名就是個(gè)萬年深坑。
參考: