npm

 

npm

任何一門計算機語言都包含了豐富的第三方庫,npm就是JavaScript這門語言的第三方庫管理工具,本文詳細介紹了JavaScript的包管理工具,npm。vue

在計算機中安裝好Node.js以後,默認已經安裝好了npm包管理工具,咱們能夠輸入npm命令進行測試:node

安裝npm包

安裝好npm包管理工具以後,咱們來介紹兩種安裝npm包的方式:全局安裝和局部安裝ios

全局安裝

若是你想將其做爲一個命令行工具,那麼你應該將其安裝到全局。這種安裝方式後能夠讓你在任何目錄下使用這個包,安裝全局包的方式以下:git

1
npm install -g vue

全局方式安裝的npm包,全局可用。npm

本地安裝
1
npm install vue@2.5.17

本地方式安裝的npm包,只在當前目錄下可用,該方式安裝的包:json

1
2
3
- 會把包安裝到node_modules目錄中
- 不會修改package.json
- 運行npm install不會自動安裝該包
本地安裝–save
1
npm install vue@2.5.17 --save

本地–save方式安裝的npm包,只在當前目錄下可用,該方式安裝的包:axios

1
2
3
- 會把包安裝到node_modules目錄中
- 會在package.json的dependencies屬性下添加包
- 運行npm install命令時,會自動安裝包到node_modules目錄中
卸載全局包
1
npm uninstall <package> -g
卸載本地
1
2
npm uninstall <package> -S, --save: Package will be removed from your dependencies.
npm uninstall <package> -D, --save-dev: Package will be removed from your devDependencies.

經過npm安裝JavaScript第三方庫時,訪問的是國外的站點,訪問速度會比較慢,此時咱們能夠使用國內的鏡像站,cnpm,詳細的使用方式請參考http://npm.taobao.org/babel

使用方式以下:antd

1
cnpm install vue

以上就是npm包的安裝和卸載介紹。app

可是,當咱們須要維護多個獨立的項目環境時, 好比項目一須要Vue2.5.10支持,而項目二須要最新的Vue2.5.17,咱們應該分別爲項目一和項目二建立獨立的、與外界隔離的第三方庫環境。而不是在當前目錄下使用本地或者全局方式安裝npm包。

咱們應該建立一個文件夾,並將該文件夾初始化爲npm包環境,使用方式以下:

1
2
3
mkdir myproject
cd myproject
npm init

使用npm init初始化項目環境的時候,會出現以下提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Press ^C at any time to quit.
package name: (myproject)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/pizza/Downloads/myproject/package.json:

{
"name": "myproject",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}


Is this OK? (yes)

按需填入上述信息,最後輸入yes,項目環境初始化完畢。若是使用默認信息,能夠直接使用npm init -y進行初始化。

上面的信息依次是:

1
2
3
4
5
6
7
8
9
name 項目名稱
version 項目的版本號
description 項目的描述信息
entry point 項目的入口文件
test command 項目啓動時腳本命令
git repository 若是你有 Git 地址,能夠將這個項目放到你的 Git 倉庫裏
keywords 關鍵詞
author 做者
license 項目要發行的時候須要的證書
查看特定package的信息
1
npm ls <package>
更新package
1
npm update <package>
搜索package
1
npm search <package>
package.json詳解

隨着項目的不斷豐富,package.json文件也會跟隨着不斷的複雜,接下來,介紹幾個在上述沒有的條目:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
"private": true,
"dependencies": {
"antd": "^2.11.1",
"classnames": "^2.2.5"
},
"devDependencies": {
"axios": "^0.15.3",
"babel-eslint": "^6.1.2"
},
"bin": {
"dk-cli": "./bin/dk-cli.js"
},
"scripts": {
"start": "node index.js"
},
"engines": {
"node": ">=6.9.0",
"npm": ">=3.10.10"
}
"publishConfig": {
"registry": "http://gongsineibu/nexus/repository/npm-hosted/"
}
  • private可選字段,布爾值。若是 private 爲 true,npm 會拒絕發佈。這能夠防止私有 repositories 不當心被髮布出去;

  • dependenciesdevDependencies

    在開發階段,咱們須要對開發的模塊進行單元測試,這時在開發環境 devDependencies 下就要安裝單元測試模塊 Mocha。

    在生產環境 dependencies,用戶直接使用項目,此時項目的開發已所有完成。這時就不須要單元測試模塊了,再加上只會影響性能。

    • dependencies 指定了項目生產環境時所依賴的模塊,
    • devDependencies 制定了項目開發環境時所依賴的模塊。
  • scripts該字段指定了運行腳本命令的npm命令行縮寫,好比start指定了運行npm run start時,所要執行的命令。

    下面的設置指定了npm run dev、npm run bulid、npm run unit、npm run test、npm run lint時,所要執行的命令;

    1
    2
    3
    4
    5
    6
    7
    "scripts": {
    "dev": "node build/dev-server.js",
    "build": "node build/build.js",
    "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
    "test": "npm run unit",
    "lint": "eslint --ext .js,.vue src test/unit/specs"
    }
  • engines字段指定依賴的node版本

  • publishConfig

    當咱們開發完本身的項目想要將它發佈到 Npm 倉庫就須要使用這個屬性。默認狀況下咱們是往 Npm 公共倉庫中發佈包,默認地址是:https://www.npmjs.com/,此時在 package.json 文件中能夠不加這個屬性。

    可是若是公司內部搭建了 Npm 私有倉庫,此時發佈包就不是往 https://www.npmjs.com/ 這個地址上發佈了,而是公司內部提供的地址,如:http://gongsineibu/nexus/repository/npm-hosted/。此時配置以下:

    1
    2
    3
    "publishConfig": {
    "registry": "http://gongsineibu/nexus/repository/npm-hosted/"
    }

    publicConfig 字段決定了咱們的包發佈到哪裏。

關於npm的介紹到這裏就結束了。

相關文章
相關標籤/搜索