npm使用入門(package.json)

npm使用入門

96 
crazygit 
2017.03.10 18:31 字數 1773 閱讀 1617評論 0

NPM是什麼


npm

npm makes it easy for JavaScript developers to share and reuse code, and it makes it easy to update the code that you're sharing.javascript

簡單來講,npm就是javascript的包管理工具,相似java語法當中的maven, gradle, python的pip。vue

安裝

npm是和Node.js一塊兒發佈的,只要安裝了Node.js,npm也安裝好了,能夠從Node.js的下載頁下載對應操做系統的安裝包安裝便可。 安裝好後,執行以下命令,檢查是否安裝成功。java

$ node -v
v6.10.0

$ npm -v
4.4.1

可是因爲npm自身的更新頻率比Node.js高不少,因此經過上面的命令安裝的npm可能不是最新版本,能夠經過下面的命令單獨更新npmnode

$ npm install npm@latest -g

安裝包

執行命令python

$ npm install <package_name>

即可以安裝對應的包到執行命令的當前目錄,並建立一個node_modules的文件夾,而後把須要安裝的安裝包下載到裏面。webpack

使用package.json

經過上面的命令,直接安裝的包默認都是最新版本的。可是在項目中,咱們怎麼讓一塊兒開發的同事知道項目中用了哪些包,具體包的版本信息呢?這時package.json就上場了,能夠把它想成是java語言中的pom.xml,
python語言中的requirements.txtgit

一個基本的package.json文件至少須要包含兩個重要信息: 包名name和版本信息version
例如:github

{
  "name": "my-awesome-package",
  "version": "1.0.0"
}

建立package.json

咱們可使用命令npm init來初始化一個package.json文件,運行這個命令後,它會詢問一些關於包的基本信息,根據實際狀況回答便可。若是不喜歡這種方式,可使用npm init --yes命令直接使用默認的配置來建立package.json文件,最後根據須要修改建立好的package.json文件便可。web

package.json文件建立好後,咱們來看看它長得什麼樣子吧!vue-cli

{
  "name": "my_package",
  "description": "",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/ashleygwilliams/my_package.git"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/ashleygwilliams/my_package/issues"
  },
  "homepage": "https://github.com/ashleygwilliams/my_package"
}

主要字段的含義以下:

  • name: 模塊名, 模塊的名稱有以下要求:

    • 所有小寫
    • 只能是一個詞語,沒有空格
    • 容許使用破折號和下劃線做爲單詞分隔符
  • version: 模塊版本信息

  • description:關於模塊功能的簡單描述,若是這個字段爲空的話,默認會從當前目錄的READMD.mdREADME文件讀取第一行內容做爲它的默認值。
  • main: 模塊被引入後,首先加載的文件,默認爲index.js
  • scripts: 定義一些經常使用命令入口

相似git同樣,npm也能夠作一些簡單的配置來設置一些咱們經常使用的信息

$ npm set init.author.email "wombat@npmjs.com"

$ npm set init.author.name "ag_dubs"

$ npm set init.license "MIT"

這樣下次執行npm init的時候,就會用上咱們配置的一些默認信息啦!

安裝模塊

使用npm install會讀取package.json文件來安裝模塊。安裝的模塊分爲兩類
dependenciesdevDependencies,分別對應生產環境須要的安裝包和開發環境須要的安裝包。

一樣在安裝模塊的時候,能夠經過指定參數來修改package.json文件,如

$ npm install <package_name> --save

$ npm install <package_name> --save-dev

來將新安裝的模塊信息記錄到package.json文件。

更新模塊

$ npm update

卸載模塊

$ npm uninstall <package_name>

若是要在卸載模塊的同時,也將他從package.json文件中移除,能夠添加跟安裝時候同樣的參數,例如:

$ npm uninstall --save lodash

全局包管理

默認狀況下。咱們執行默認的安裝命令安裝的包都是安裝到當前目錄下的,只能在當前目錄下使用。可是假如咱們須要使用一些全局的軟件,如grunt,咱們能夠在安裝的時候,添加-g選項來安裝,方便後面在任何目錄下均可以使用grunt相關的命令

$ npm install -g grunt

同理,更新全局的安裝包只須要執行命令

$ npm update -g

爲了查看當前哪些包須要更新,可使用以下命令來查看

$ npm outdated -g --depth=0
Package             Current  Wanted  Latest  Location
vue-cli               2.7.0   2.8.1   2.8.1
webpack              1.13.2   2.2.1   2.2.1
webpack-dev-server   1.14.1   2.4.1   2.4.1

卸載全局安裝的包也只須要加上-g選項便可。如

$ npm uninstall -g jshint

建立本身的Node.js模塊

一個Node.js模塊就是一個能夠發佈到npm,供其餘開發者下載和使用的模塊。那麼,到底怎樣和其餘開發者分享咱們的模塊呢?

首先,咱們必須建立一個package.json文件,添加上關於咱們想要分享的模塊信息,如:模塊功能,開發者信息等。

一旦package.json文件建立好後,咱們須要建立一個模塊被引入時,就加載的文件。
package.jsonmain字段指定的文件,默認爲index.js。咱們須要在文件中將一個函數賦值給exports模塊,方便其餘開發者調用咱們的模塊。如

exports.printMsg = function() {
  console.log("This is a message from the demo package");
}

包(Pacakges)和模塊(Modules)

在使用npm的時候,有兩個概念容易搞混,那就是包(Pacakges)和模塊(Modules)。簡單來講,包和模塊的區別以下:

  • 包是一個被package.json文件描述了的文件或者目錄
  • 模塊是能夠被Node.js引用的文件或目錄

什麼是包?

a) a folder containing a program described by a package.json file
b) a gzipped tarball containing (a)
c) a url that resolves to (b)
d) a <name>@<version> that is published on the registry with (c)
e) a <name>@<tag> that points to (d)
f) a <name> that has a latest tag satisfying (e)
g) a git url that, when cloned, results in (a).

什麼是模塊?

  • A folder with a package.json file containing a main field.
  • A folder with an index.js file in it.
  • A JavaScript file.

npm配置

在使用npm時,咱們能夠根據我的的須要,指定不少配置信息。
npm的配置信息加載優先級以下(從高到低)

  1. 命令行參數
  2. 環境變量
  3. npmrc文件
    1. 項目級別的npmrc文件(/path/to/my/project/.npmrc)
    2. 用戶級別的npmrc文件(~/.npmrc)
    3. 全局的npmrc文件($PREFIX/etc/npmrc)
    4. npm內置的npmrc文件(/path/to/npm/npmrc)

查看配置

$ npm config list -l

配置npm源

最後介紹一個比較重要的配置,當咱們使用默認配置從npm官網下載模塊時,因爲網絡的因素,會致使咱們的下載速度特別慢。因此,咱們能夠配置一些國內的鏡像來加快咱們的下載速度。在這裏,我推薦使用淘寶的npm鏡像, 具體使用方式以下:

  • 臨時使用, 安裝包的時候經過--registry參數便可

    $ npm install express --registry https://registry.npm.taobao.org
  • 全局使用

    $ npm config set registry https://registry.npm.taobao.org
      // 配置後可經過下面方式來驗證是否成功
      npm config get registry
      // 或
      npm info express
  • 使用cnpm使用

    // 安裝cnpm
      npm install -g cnpm --registry=https://registry.npm.taobao.org
    
      // 使用cnpm安裝包
      cnpm install express

更多使用

請參考官方文檔

相關文章
相關標籤/搜索