Node.js的npm包管理器基礎使用教程_node.js

來源:互聯網
上載者:User

配置

npm setnpm set init-author-name 'Your name'npm set init-author-email 'Your email'npm set init-author-url 'http://yourdomain.com'npm set init-license 'MIT'

上面命令等於為npm init設定了預設值,以後執行npm init的時候,package.json的作者姓名、郵件、首頁、許可證欄位就會自動寫入預設的值。這些資訊會存放在使用者主目錄的~/.npmrc檔案,使得使用者不用每個項目都輸入。
如果某個項目有不同的設定,可以針對該項目運行npm config。
1.

npm set save-exact true

上面命令設定加入模組時,package.json將記錄模組的確切版本,而不是一個可選的版本範圍。

2.

npm config get prefix

3.

npm config set prefix /usr/local

npm使用
安裝:

npm install grunt-cli

安裝之前,npm install會先檢查,node_modules目錄之中是否已經存在指定模組。如果存在,就不再重新安裝了,即使遠程倉庫已經有了一個新版本,也是如此。
如果你希望,一個模組不管是否安裝過,npm 都要強制重新安裝,可以使用-f或--force參數。

本地安裝: package會被下載到當前所在目錄,也只能在目前的目錄下使用。安裝結束後,目前的目錄下回多出一個node_modules目錄,grunt-cli就安裝在裡面。

npm install -g grunt-cli

全域安裝:package會被下載到到特定的系統目錄下,安裝的package能夠在所有目錄下使用。現在變成了/usr/local/lib/node_modules/grunt-cli,/usr/local/lib/node_modules/也就是之前所說的全域安裝目錄啦。
1.安裝目前的目錄package.json檔案中配置的devDependencies模組

npm install

2.安裝本地的模組檔案

npm install ./package.tgz

3.安裝指定URL的模組

npm install https://github.com/indexzero/forever/tarball/v0.5.6

4.安裝本地檔案系統中指定的目錄包含的模組

npm install <folder>

5.安裝並更新package.json中的版本配置

npm install <name> [–save|–save-dev|–save-optional]

(1)添加–save 參數安裝的模組的名字及其版本資訊會出現在package.json的dependencies選項中
(2)添加–save-dev 參數安裝的模組的名字及其版本資訊會出現在package.json的devDependencies選項中
(3)添加–save-optional 參數安裝的模組的名字及其版本資訊會出現在package.json的optionalDependencies選項中
6.安裝模組的指定版本

npm install <name>@<version>Example:npm install underscore@1.5.2

7.安裝模組指定版本號碼範圍內的某一個版本

npm install <name>@<version range>

Example:

npm install async@”>=0.2.0 <0.2.9″

–force強制拉取遠端資源,即使本地已經安裝這個模組
Example:

npm install underscore –force

8.-g或–global全域安裝模組,如果沒有這個參數,會安裝在目前的目錄的node_modules子目錄下
Example:

npm install -g express

如果你希望,所有模組都要強制重新安裝,那就刪除node_modules目錄,重新執行npm install。

$ rm -rf node_modules$ npm install

更新

npm update [-g] [<name> [<name> … ]

更新指定name列表中的模組。-g參數更新全域安裝的模組。
如果沒有指定name,且不是在某個模組內,會更新目前的目錄依賴的所有包都會被更新(包括全域和模組內);如果目前的目錄在某個模組目錄內,會更新該模組依賴的模組,所以不指定name直接運行npm update時,最好在某個模組內運行,以免更新到其他不想更新的模組。

卸載

npm uninstall package

查看
查看安裝了那些包

npm ls --depth=0

查看特定包具體資訊

npm ls grunt-clinpm info grunt-cli

搜尋

npm search grunt-cli

發布
1.package.json
package.json說明:
npm命令運行時會讀取目前的目錄的 package.json 檔案和解釋這個檔案,這個檔案基於 Packages/1.1規範。在這個檔案裡你可以定義你的應用程式名稱( name )、應用描述( description )、關鍵字( keywords )、版本號碼( version )、應用的配置項( config )、首頁( homepage )、作者( author )、資源倉庫地址( repository )、bug的提交地址( bugs ),授權方式( licenses )、目錄( directories )、應用入口檔案( main )、命令列檔案( bin )、應用相依模組( dependencies )、開發環境相依模組( devDependencies )、運行引擎( engines )和指令碼( scripts )等。

對於開發人員而言,開發和發布模組都依賴於他對這個檔案 package.json 所包含的意義的正確理解。我們下面用一個本文共用的例子來說明:

{  "name": "test",  "version": "0.1.0",  "description": "A testing package",  "author": "A messed author <messed@example.com>",  "dependencies": {    "express": "1.x.x",    "ejs": "0.4.2",    "redis": ">= 0.6.7"  },  "devDependencies": {    "vows": "0.5.x"  },  "main": "index",  "bin": {    "test": "./bin/test.js"  },  "scripts": {    "start": "node server.js",    "test": "vows test/*.js",    "preinstall": "./configure",    "install": "make && make install"  },  "engines": {    "node": "0.4.x"  }}

這個例子裡我們定義了應用的入口檔案( main )為 index ,當其他應用引用了我們的模組 require('test') 時,這個 main 的值 index.js 檔案被調用。指令碼( scripts )使用hash 表定義了幾個不同的命令。script.start 裡的定義的 node server.js 會在 npm start 時被調用,同樣的 npm test 調用時對應的 scripts.test 裡定義的命令被調用。在有些 native 模組需要編譯的話,我們可以定義先行編譯和編譯的命令。

本例中還定義了應用相依模組( dependencies )和開發環境相依模組( devDependencies )。應用相依模組會在安裝時安裝到當前模組的 node_modules 目錄下。開發環境相依模組主要時在開發環境中用到的相依模組,用命令 npm 的命令 install 或 link 加上參數 —dev 安裝到當前模組的 node_modules 目錄下。

name: package的名字(由於他會成為url的一部分,所以 non-url-safe 的字母不會通過,也不允許出現"."、"_"),最好先在[](http://registry.npmjs.org/上搜下你取的名字是否已經存在)
version: package的版本,當package發生變化時,version也應該跟著一起變化,同時,你聲明的版本需要通過semver的校正(semver可自行Google)
dependencies: package的應用相依模組,即別人要使用這個package,至少需要安裝哪些東東。應用相依模組會安裝到當前模組的node_modules目錄下。
devDependencies:package的開發相依模組,外掛程式發布的時候自動刪除不相關代碼。用個檔案記錄一下當前項目中安裝或者需要的外掛程式,即別人要在這個package上進行開發,可以一鍵安裝項目所需外掛程式。

2.版本號碼
大家也注意到 package.json 裡的版本號碼有些是 >= 0.6.7 有些是 1.x.x,這有什麼區別?npm 使用於語義化的版本識別來進行版本管理。並不是所有的模組都會提供向後相容性,有時候某些模組因為某些原因導致不向後相容。所以我們需要定義一些規則來保證模組能夠在某些特定的版本中可用,並且保證能用最新的版本,因為那些版本總是修改了一些 bug 或提升了效能等。我們來看一下版本定義的欄位:

例子:0.4.2

+ 大版本(0)
+ 小版本(4)
+ 補丁版本(2)
一個軟體發布的時候,預設就是 1.0.0 版。如果以後發布補丁,就增加最後一位元字,比如1.0.1;如果增加新功能,且不影響原有的功能,就增加中間的數字(即小版本號碼),比如1.1.0;如果引入的變化,破壞了向後相容性,就增加第一位元字(即大版本號碼),比如2.0.0。

在上面 package.json 的定義裡我們確信模組在所有的 Nodejs 0.4及以上和0.5以下版本裡都能運行。相依模組 redis 在所有大於或等於0.6.7的版本上都能運行,相依模組 ejs 只能確保運行在0.4.2版本裡,相依模組 express 確保能夠相容大於或等於1.0.0並且小於2.0.0。

產生

npm init

用來初始化產生一個新的package.json檔案。它會向使用者提問一系列問題,如果你覺得不用修改預設配置,一路斷行符號就可以了。
如果使用了-f(代表force)、-y(代表yes),則跳過提問階段,直接產生一個新的package.json檔案。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.