【Node Hero】2. 使用 NPM

本文轉載自:衆成翻譯
譯者:網絡埋伏紀事
連接:http://www.zcfy.cc/article/1749
原文:https://blog.risingstack.com/node-hero-npm-tutorial/html

本章將學習什麼是 NPM,以及如何使用它。咱們開始吧!node

NPM 概述

NPM 是 Node.js 應用程序所用的包管理器 - 你能夠在 NPM 中找到大量模塊,這樣你就不用從新造輪子了。它就像 Java 的 Maven 或者 PHP 的 Composer。與 NPM 交互有兩種主要的接口 - NPM 網站以及 NPM 命令行工具。git

網站和 CLI 使用一樣的註冊庫來顯示模塊以及查找模塊。web

NPM 網站

NPM 網站地址爲 https://npmjs.com。你能夠註冊成一個新用戶,或者只查找包。npm

npm website for Node Hero using npm tutorial

命令行界面

要運行 CLI,只需執行:編程

npm

注意,NPM 是與 Node.js 二進制文件捆綁在一塊兒的,因此沒必要安裝它 - 可是,若是想使用指定的 npm 版本,能夠更新它。若是想安裝 npm 第三版,那麼就能夠執行:npm install npm@3 -gjson

使用 NPM

在上一章 開始使用 Node.js 中,當建立 package.json 文件時,已經遇到了 NPM。下面咱們繼續擴展知識!api

添加依賴

本節將學習如何給應用程序添加運行時依賴。網絡

有了 package.json 文件以後,就能夠給應用程序添加依賴了。下面咱們先添加一個!試試下面的命令:異步

npm install lodash --save

用這一條命令,咱們作了兩件事情:首先,lodash 被下載,並放到 node_modules 文件夾。全部外部依賴都會放在這個文件夾中。通常不會將這個文件夾添加到源代碼管理,因此若是你在用 git,要確保將 lodash 添加到 .gitignore 文件中。

這對你的 .gitignore 是一個好起點。

# Logs
logs
*.log
npm-debug.log*

# Runtime data
pids
*.pid
*.seed

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules
jspm_packages

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history

如今咱們來看看 package.json 文件中有啥變化!文件中出現了一個新屬性dependencies

"dependencies": {
  "lodash": "4.6.1"
}

這意味着 lodash 版本 4.6.1 如今安裝好了,可使用了。注意,NPM 遵循 SemVer 規則來控制包的版本。

假設版本號格式爲 「主版本號.次版本號.補丁版本號」,看成出不兼容的 API 修改時,增長主版本號;當以向後兼容的方式添加功能時,增長次版本號;看成出向後兼容的錯誤修正時,增長補丁版本號。更多信息參見:http://semver.org/

既然 lodash 已經能夠用了,咱們來看看能怎麼用!能夠像你用本身的模塊同樣的方式用它,不過如今不須要定義路徑,只須要模塊的名稱:

// index.js
const _ = require('lodash')

_.assign({ 'a': 1 }, { 'b': 2 }, { 'c': 3 });  
// → { 'a': 1, 'b': 2, 'c': 3 }

添加開發依賴

本節將學習如何把構建時依賴添加到應用中。

在建立 Web 應用程序時,可能須要壓縮 JavaScript 文件,合併 CSS 文件等等。作這種事情的模塊只會在資源構建期間運行,因此運行的應用程序不須要它們。

你能夠像這樣安裝這些腳本:

npm install mocha --save-dev

以後,package.json 文件中會出現一個稱爲 devDependencies 的新小節。全部帶有 --save-dev 安裝的模塊都會被放在這裏 - 它們也會被放在同一 node_modules 目錄中。

NPM 腳本

NPM 腳本是一個很強大的概念 - 有了它們相助,就能夠建立小的實用工具,甚至構成複雜的構建系統。

最多見的就是 starttest 腳本。用 start 腳本能夠定義別人如何啓動你的應用程序,用 test 腳本定義如何運行測試。在 package.json 中,它們能夠像這樣:

"scripts": {
    "start": "node index.js",
    "test": "mocha test",
    "your-custom-script": "echo npm"
  }

這裏要注意的事情:

  • start: 很簡單,它只描述應用程序的起點,能夠被 npm start 調用。

  • test: 用途是執行你的測試 - 這裏有個陷阱,在本例中 mocha 不須要全局安裝,由於 npm 會在 node_modules/.bin 文件夾下查找它,而 mocha 也會放在這裏。它能夠用 npm test 調用。

  • your-custom-script: 任何你想要的東西,你能夠挑任何名稱。它能夠用 npm run your-custom-script 調用 - 不要忘記 run 部分!

做用域包/私有包

起初 NPM 對於模塊名稱有一個全局共享的命名空間 - 在註冊庫中有超過 250,000 個模塊,大部分簡單名稱都已經被採用了。此外,全局命名空間只包含公共模塊。

NPM 經過引入做用域包(Scoped Package)來解決此問題。做用域包有以下命名模式:

@myorg/mypackage

能夠採用與之前同樣的方式安裝做用域包:

npm install @myorg/mypackage --save-dev

它會以以下方式出如今 package.json 中:

"dependencies": {
  "@myorg/mypackage": "^1.0.0"
}

不出所料,請求做用域包應該是以下方式:

require('@myorg/mypackage')

更多信息,請參考 NPM 做用域模塊文檔

下一步:異步編程

下一章學習使用回調和 Promises 實現異步編程的原理

圖片描述

相關文章
相關標籤/搜索