我們這節(jié)課開(kāi)始學(xué)習(xí)一下npm其實(shí)npm我們之前是接觸過(guò)的,在我們?cè)谀~(yú)的js前端課程或CSS3高級(jí)課程的時(shí)候译株,我們接觸到了gulp,grunt之類(lèi)的時(shí)候,我們?cè)?jīng)安裝一些gulp的插件的時(shí)候挺益,比如csslint歉糜,我們是這樣安裝的:
npm install --save-dev gulp-csslint
這個(gè)npm就是我們現(xiàn)在要學(xué)的npm。https://www.npmjs.com/只要你安裝了node軟件望众,你就可以直接使用npm了匪补,因?yàn)閚pm是隨同nodejs一起安裝的包管理工具,能解決nodejs代碼部署上的很多問(wèn)題烂翰,常見(jiàn)場(chǎng)景有以下幾種:第一夯缺,允許用戶(hù)從npm服務(wù)器下載并安裝別人編寫(xiě)的npm包第二,允許用戶(hù)把自己編寫(xiě)的npm包上傳以npm服務(wù)器供別人使用拿我們上面的csslint來(lái)做例子甘耿,npm是我們使用所有的npm命令必須要帶的踊兜,后面的install表示的是我們要安裝某模塊,--save-dev這個(gè)我們先不管佳恬,最后面的gulp-csslint就是我們要安裝的模塊的名字捏境。npm分為全局安裝和本地安裝于游,所謂的本地安裝只會(huì)對(duì)你當(dāng)前的目錄文件夾有影響,對(duì)別的文件夾沒(méi)有影響典蝌,上面的csslint就是本地安裝曙砂,但如果你想全局安裝,剛才的命令就得改造成為:
npm install gulp-csslint -g
全局安裝的路徑在C:\Users\Administrator\AppData\Roaming\npm 我們安裝好了某模塊之后骏掀,會(huì)發(fā)現(xiàn)我們當(dāng)前的文件夾多了一個(gè)node_modules的文件夾,我們看一下目錄結(jié)構(gòu)
D:\ispace\expresslearn\node_modules\coffee-script>tree /F
卷 新加卷 的文件夾 PATH 列表
卷序列號(hào)為 3ABA-FA76
D:.
│ .npmignore
│ CNAME
│ CONTRIBUTING.md
│ LICENSE
│ package.json
│ Rakefile
│ README
│
├─bin
│ cake
│ coffee
│
└─lib
└─coffee-script
browser.js
cake.js
coffee-script.js
command.js
grammar.js
helpers.js
index.js
lexer.js
nodes.js
optparse.js
parser.js
repl.js
rewriter.js
scope.js
sourcemap.js
D:\ispace\expresslearn\node_modules\coffee-script>
我們發(fā)現(xiàn)這個(gè)文件夾里面有一個(gè)文件叫package.json
name - 包名柱告。
version - 包的版本號(hào)截驮。
description - 包的描述。
homepage - 包的官網(wǎng) url 际度。
author - 包的作者姓名葵袭。
contributors - 包的其他貢獻(xiàn)者姓名。
dependencies - 依賴(lài)包列表乖菱。如果依賴(lài)包沒(méi)有安裝坡锡,npm 會(huì)自動(dòng)將依賴(lài)包安裝在 node_module 目錄下。
repository - 包代碼存放的地方的類(lèi)型窒所,可以是 git 或 svn鹉勒,git 可在 Github 上。
main - main 字段是一個(gè)模塊ID吵取,它是一個(gè)指向你程序的主要項(xiàng)目禽额。就是說(shuō),如果你包的名字叫 express皮官,然后用戶(hù)安裝它脯倒,然后require("express")。
keywords - 關(guān)鍵字
D:\ispace\expresslearn\node_modules\coffee-script>cat package.json
{
"_args": [
[
"coffee-script@~1.6.3",
"D:\\ispace\\expresslearn\\node_modules\\swagger-ui"
]
],
"_from": "coffee-script@>=1.6.3 <1.7.0",
"_id": "coffee-script@1.6.3",
"_inCache": true,
"_installable": true,
"_location": "/coffee-script",
"_npmUser": {
"email": "jashkenas@gmail.com",
"name": "jashkenas"
},
"_npmVersion": "1.2.24",
"_phantomChildren": {},
"_requested": {
"name": "coffee-script",
"raw": "coffee-script@~1.6.3",
"rawSpec": "~1.6.3",
"scope": null,
"spec": ">=1.6.3 <1.7.0",
"type": "range"
},
"_requiredBy": [
"/swagger-ui"
],
"_resolved": "https://registry.npmjs.org/cof ... ot%3B,
"_shasum": "6355d32cf1b04cdff6b484e5e711782b2f0c39be",
"_shrinkwrap": null,
"_spec": "coffee-script@~1.6.3",
"_where": "D:\\ispace\\expresslearn\\node_modules\\swagger-ui",
"author": {
"name": "Jeremy Ashkenas"
},
"bin": {
"cake": "./bin/cake",
"coffee": "./bin/coffee"
},
"bugs": {
"url": "https://github.com/jashkenas/c ... ot%3B
},
"dependencies": {},
"description": "Unfancy JavaScript",
"devDependencies": {
"jison": ">=0.2.0",
"uglify-js": "~2.2"
},
"directories": {
"lib": "./lib/coffee-script"
},
"dist": {
"shasum": "6355d32cf1b04cdff6b484e5e711782b2f0c39be",
"tarball": "http://registry.npmjs.org/coff ... ot%3B
},
"engines": {
"node": ">=0.8.0"
},
"homepage": "http://coffeescript.org",
"keywords": [
"coffeescript",
"compiler",
"javascript",
"language"
],
"licenses": [
{
"type": "MIT",
"url": "https://raw.github.com/jashken ... ot%3B
}
],
"main": "./lib/coffee-script/coffee-script",
"maintainers": [
{
"name": "jashkenas",
"email": "jashkenas@gmail.com"
},
{
"name": "michaelficarra",
"email": "npm@michael.ficarra.me"
}
],
"name": "coffee-script",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git://github.com/jashkenas/coffee-script.git"
},
"scripts": {
"test": "node ./bin/cake test"
},
"version": "1.6.3"
}