npm入門文檔

前言

NPM做爲Node的模塊管理和發佈工具,做用與Ruby的gem、Python的pypl或setuptools、PHP的pear和.Net的Nuget同樣。在當前前端工程化極速狂奔的年代,即便不作nodejs的開發,也須要學習和使用NPM的,誰叫grunt、bower、yeoman這一堆的工具都經過NPM發佈呢?! 本文爲針對非nodejs的開發者整理的NPM使用說明。固然最好的教程仍是官網的啦!html

2、什麼是包?

nodejs以包的形式組織程序模塊,而包的定義卻十分簡單——包含文件內容符合規範package.json文件的目錄或歸檔文件。並經過」package-name」@」version」來惟一標識每一個包。前端

3、靈魂——package.json

包的定義和NPM都圍繞着package.json文件作文章,package.json文件其實就至關於JAVA中的MANIFEST.MF文件,用於存放模塊的名稱、版本、做者、機構、模塊入口、依賴項等信息。首先咱們經過node

npm init git

命令在當前工做目錄下以用戶引導的方式建立一個全新的package.json文件。而後經過github

npm help json shell

命令打開幫助文檔,並根據實際的項目需求自行初始化package.json的項目便可。下面將對基礎配置項進行敘述。npm

name

必選項,表示模塊名稱。命名時不能包含js、node、和url中須要轉義的字符,不能以._爲開頭。json

version

必選項,表示模塊的版本號。版本號以前端工程化

主版本號(Major).副版本號(Minor).補丁版本號(Patch) 數組

構成(如1.2.0)。 而engines、dependencies和devDependencies等配置項中可以使用語義化版本號語法,具體以下:

標記

介紹

1.1.1

精確下載安裝1.1.1版本的包

>、=1.1.1

分別表示下載安裝大於、小於等於、大於等於1.1.1版本的包

1.0.1-1.1.1

表示版本範圍是包含1.0.1到1.1.1版本的包

~1.1.1

表示儘可能採用靠近1.1.1版本的包,但可用的包版本範圍是1.1.1-0到1.1.x-x版本的包

~1.1

表示下載安裝1.1.x-x版本的包

~1

表示下載安裝1.x.x-x版本的包

^1.1.1

表示包版本範圍是1.1.1到1.x.x-x

^0.1.1

表示包版本範圍是1.1.1到1.1.x-x

^1.1

表示包版本範圍是1.1.x-x到1.x.x-x

^1

表示包版本範圍是1.x.x-x

空格、x、

表示任意版本便可

其餘

兩個版本選擇器間,空格表示and關係,」||」 表示or關係。

main

必選項,模塊入口文件相對路徑(相對於模塊根目錄)。

description

可選項,表示模塊功能描述,顯示在

npm search "package-name"

keywords

可選項,數組類型,表示模塊的關鍵字,顯示在

npm search "package-name"

author

可選項,表示發起者信息。示例以下:

{
"author": {
"name": "luoyue",
"email": "luoyue@zz173.com",
"url": "https://post.zz173.com"
},
}

engines

可選項,依賴的node版本。示例以下:

{
"engines":{
"node": ">= 0.8.0"
}
}

repository

可選項,源碼託管地址。示例以下:

{
"repository": {
"type": "git",
"url": "git+https://github.com/rozbo/hexo-hrefmd.git",
},
}

scripts

可選項,自定義在cli中輸入

npm "script"

時實際執行的程序。npm默認提供大量的script供咱們調用。

dependencies、devDependencies

可選項,用於配置模塊的生產環境依賴包和開發環境依賴包。當執行npm install時,npm會根據這兩個配置項的值去下載安裝相關的依賴包。二者的區別是devDependencies是模塊開發過程的依賴包(如:grunt只在開發時有用的模塊),而且當其餘模塊須要依賴當前模塊時,當經過npm install 「package-name」時會自動下載安裝dependencies的包而不會下載devDependencies的包。

4、NPM的配置信息

如今咱們對package.json有必定的瞭解了,如今就到理論+實踐時間咯。在實踐以前咱們要先配置一下NPM的資源庫(國內被牆,你懂的),內網用戶還要配置一下網絡代理地址等信息。

查看部分配置信息——

npm config ls

查看全部配置信息——

npm config ls -l

修改配置信息的三種方式:

1. 直接修改配置文件

修改用戶家目錄的.npmrc文件(沒有則新建一個);

2. 經過命令修改

npm config set "config" "config-value"

命令;

npm config set registry http://registry.npm.taobao.org/
npm config set proxy http://proxy.com:8081/

3. 經過追加命令

好比–registry=」registry-uri」等命令可選項臨時配置。

npm install grunt –registry=http://registry.npm.taobao.org

5、查找、安裝/卸載、更新依賴包

在安心玩耍以前咱們要先了解一件事件,就是包的做用範圍分爲 全局本地 兩種。

包的種類

全局包

用做在cli上直接調用,而沒法在項目中經過require導入依賴包。如將grunt-cli安裝到全局時,則可在cli中輸入grunt調用了!

npm install -g grunt-cli

cmd或shell中直接調用

grunt

本地包

用做在項目中經過require導入依賴包,供項目使用。

那麼全局和本地的依賴包究竟是存放在哪裏的呢?經過

npm root -g

npm root

可分別查看全局和本地的依賴包下載安裝的絕對目錄了。本地的依賴包會存放在當前項目根目錄下的node_modules目錄下。

如今咱們能夠正式操做依賴包了!

包的搜索

搜索依賴包,

npm search "package-name"

查看依賴包的package.json信息,

npm view "package-name"

另外咱們能夠單獨查看package.json某個配置。

查看包的依賴關係

npm view "package-name" dependencies

查看包的源文件地址

npm view "package-name" repository.url

查看包所依賴的node版本號

npm view "package-name" engines

查看本地包信息

查看當前項目的本地依賴包,

npm list

查看全局依賴包,

npm list -g

查看本地依賴包是否不是最新版

npm outdated "package-name"

安裝、卸載、更新包

安裝包

本地

npm install "package-name"

全局

npm install -g "package-name"

這樣會安裝最新版的包,若須要安裝特定版本,則

npm install "package-name"@"version"

卸載包

卸載本地

npm uninstall "package-name"

卸載全局

npm uninstall -g "package-name"

更新包

更新本地

npm update "package-name"

更新全局

npm update -g "package-name"

6、發佈包

站在使用者的角度,掌握上述章節的內容已經足夠了,但當咱們開發出好玩的項目並且又想和你們分享時,那麼下面的內容就不得不瞭解了!

1.註冊一個registry賬號,

npm adduser

,而後根據引導輸入賬號、密碼和郵箱地址。

2. 登陸registry賬號,

npm login

,登陸信息會保存在客戶端。

3. 發佈項目,

npm publish

。(建議發佈版本從1.0.0開始)

4.注意

通過上述步驟咱們就可發佈模塊了。但這個時候你也許會考慮到項目中部分目錄和文件不該該被髮布出去,應該有一個像.gitignore的文件來配置這些排除項。看來你猜對了,那就是.npmignore文件,不過npm作得更靈活一些!

  1. 默認不帶.npmignore文件,若項目中帶.gitignore則使用.gitignore文件內容的配置項;

  2. 若帶.npmignore文件則不使用.gitignore文件中的配置項;

  3. 即便配置.npmignore文件,也沒法排除package.json和README.*文件;

  4. NPM內置設定如下文件必須被排除

.*.swp
.*.swp
._*
.DS_Store
.git
.hg
.lock-wscript
.svn
.wafpickle-*
CVS
npm-debug.log

7、總結

如今咱們終於能夠安心下載各類node依賴包來推動前端工程化的步伐了!

8、參考

相關文章
相關標籤/搜索