目錄
- 1、npm的安裝
- [1.1、查看npm版本或者是否安裝成功(npm -v)]
- [1.2、npm修改全局包路徑及環(huán)境變量配置(npm config set)]
- [1.3、查看npm的配置]
- [1.4、安裝淘寶鏡像]
- [2、npm 創(chuàng)建項目(npm init)]
- [3、使用npm安裝模塊(npm install)]
- [ 3.1、將包安裝并保存到生產(chǎn)環(huán)境或者開發(fā)環(huán)境(npm i 模塊名 --save、npm i 模塊名 -D)]
- [ 3.2、本地安裝和全局安裝(npm i 模塊名 -g)]
- [3.3、根據(jù)package.json文件安裝依賴]
- [3.4、devDependencies 和dependencies 的區(qū)別]
- [4、卸載模塊(npm uninstall)]
- [5、查看已安裝的模塊(npm list)]
- [6、更新模塊(npm update)]
- [7、如何離線安裝 npm 全局包]
- [7.1、直接復(fù)制所有文件]
- [7.2、先復(fù)制文件再安裝方式]
- [8、npx命令]
- [9、nvm安裝使用]
- [9.1、nvm安裝后vscode不識別node、npm等問題的解決辦法]
1、npm的安裝
NPM是隨同NodeJS一起安裝的包管理工具,只要安裝了Node.js,npm也安裝好了,node.js的安裝:http://www.runoob.com/nodejs/nodejs-install-setup.html
但是由于npm自身的更新頻率比Node.js高很多,所以通過上面的命令安裝的npm可能不是最新版本,可以通過下面的命令單獨(dú)更新npm
1. npm install npm@latest -g
1.1、查看npm版本或者是否安裝成功(npm -v)
安裝完畢在命令行輸入以下命令測試是否安裝成功,正確會出現(xiàn)版本號
1. npm -v
1.2、npm修改全局包路徑及環(huán)境變量配置(npm config set)
node安裝完后會自動也裝上了npm,npm的可執(zhí)行腳本跟node的可執(zhí)行程序在同一目錄下,如果node的已經(jīng)配置好了環(huán)境變量,那么就不用再配置 npm 的環(huán)境變量了(node 的環(huán)境變量應(yīng)該是自動配置好的)
通過以下命令可以查看 npm 全局包的安裝路徑:一般來說默認(rèn)是在 C 盤下
1. npm config get prefix
(1)配置npm的全局模塊的本地存放路徑以及cache的路徑
例如我希望將以上兩個文件夾放在 E:\develop\nodeJs 目錄下,便在NodeJs下建立"node_global"及"node_cache"兩個文件夾。
首先在命令行輸入以下命令改變npm配置
1. npm config set prefix "E:\develop\nodeJs\node_global"
2. npm config set cache "E:\develop\nodeJs\node_cache"
然后在系統(tǒng)環(huán)境變量添加系統(tǒng)變量NODE_PATH,輸入路徑 E:\develop\nodeJs\node_global\node_modules,此后所安裝的模塊都會安裝到該路徑下。注意:這里在環(huán)境變量上配置的路徑是 node_global 下的 node_modules 。
此后我們可以在命令行輸入以下命令試著安裝express:
1. npm install express -g
//“-g”這個參數(shù)意思是裝到global目錄下,也就是上面設(shè)置 NODE_PATH 路徑:E:\develop\nodeJs\node_global\node_modules 里面
安裝完畢后可以看到E:\develop\nodeJs\node_global\node_modules已經(jīng)有express 包了
(2)配置全局安裝包的環(huán)境變量
在系統(tǒng)環(huán)境變量中 Path 中添加路徑:E:\develop\nodeJs\node_global 注意:此時添加的路徑是 node_global 的路徑,因為下載的全局包的可執(zhí)行腳本都放在這個路徑下,全局包的下載路徑和可執(zhí)行腳本的下載路徑是不一樣的。
這樣配置好了之后你下載的全局包就能在任何路徑下使用
參考:https://www.cnblogs.com/yominhi/p/7039795.html
1.3、查看npm的配置
1. $ npm config list
1.4、安裝淘寶鏡像
1. npm install -g cnpm --registry=https://registry.npm.taobao.org
2、npm 創(chuàng)建項目(npm init)
使用 npm 初始化項目,先創(chuàng)建一個文件夾,然后在該文件夾目錄下執(zhí)行 npm init 即可,npm 會自動創(chuàng)建一個 package.json 文件。
為區(qū)別普通文件夾及項目文件,人們習(xí)慣性規(guī)定, 項目文件應(yīng)該包含一個package.json 的文件。 package.json 文件里記錄項目的描述信息:項目作者、項目描述、項目依賴哪些包、具體包的版本信息、插件配置信息等等。
使用 npm init 指令創(chuàng)建項目描述文件 package.json。命令行里會以交互的形式讓你填一些項目的介紹信息,依次介紹如下:
- name 項目名稱
- version 項目的版本號
- description 項目的描述信息
- entry point 項目的入口文件 (項目被引入后,首先加載的文件)
- test command 項目啟動時腳本命令
- git repository 如果你有 Git 地址,可以將這個項目放到你的 Git 倉庫里
- contributors -項目的其他貢獻(xiàn)者姓名。
- dependencies 項目的依賴包列表。如果依賴包沒有安裝,npm 會自動將依賴包安裝在 node_module 目錄下。
- keywords 關(guān)鍵詞
- author 作者名字
- license 項目要發(fā)行的時候需要的證書
也可以使用npm init - -yes命令直接使用默認(rèn)的配置來創(chuàng)建 package.json文件
3、使用npm安裝模塊(npm install)
執(zhí)行以下命令行
1. npm install <package_name> //模塊的名字
2. npm install gulp@3.9.1 //安裝指定版本
3. npm install webpack@latest //安裝最新版本
下載安裝好之后,所下載的模塊就放在了項目目錄下的 node_modules 目錄中,可以在代碼中直接通過 require('package_name') 引入。但此時并不會將模塊依賴寫入package.json中,運(yùn)行 npm install 初始化項目時也不會下載該模塊。
3.1、將包安裝并保存到生產(chǎn)環(huán)境或者開發(fā)環(huán)境(npm i 模塊名 --save、npm i 模塊名 -D)**
要安裝模塊并保存在package.json中應(yīng)使用以下命令行。下面兩中方法在運(yùn)行 npm install 初始化項目時,都會將模塊下載到項目目錄下。
安裝到生產(chǎn)環(huán)境:
1. npm install vue --save //加入至package.json中的dependencies節(jié)點(diǎn),意思是生產(chǎn)環(huán)境所依賴的包
2. npm i vue -S //縮寫(是大寫的S)
安裝到開發(fā)環(huán)境:
1. npm install vue --save-dev //加入至package.json中的evDependencies節(jié)點(diǎn),意思是開發(fā)環(huán)境所依賴的包
2. npm i vue -D //縮寫
3.2、本地安裝和全局安裝(npm i 模塊名 -g)
npm 的包安裝分為本地安裝(local)、全局安裝(global)兩種,如果不指定則默認(rèn)是安裝在本地。
本地安裝將安裝包放在項目文件目錄下的 ./node_modules 文件夾中,如果沒有 node_modules 目錄,會自動生成 node_modules 目錄,可以通過 require() 來引入本地安裝的包。
全局安裝將安裝包放在 /usr/local 下或者你的 node 的安裝目錄,安裝后可以直接在命令行里使用。
1. npm install <package_name> // 本地安裝
2. npm install <package_name> -g //全局安裝
3.3、根據(jù)package.json文件安裝依賴
我們在開發(fā)時會安裝各種各樣的包,當(dāng)把項目上傳到GitHub時不會把 node-modules 文件夾上傳上去,如果把項目克隆下來運(yùn)行就必須先安裝依賴。命令如下:
1. npm install //安裝所有package.json文件中有的包,包括指定的開發(fā)環(huán)境中依賴的包(即devDependencies 里面的包)和指定的生產(chǎn)環(huán)境中依賴的包(即dependencies 里面的包)
2. npm install --production //只安裝指定的生產(chǎn)環(huán)境中依賴的包(即dependencies 里面的包)
3.4、devDependencies 和dependencies 的區(qū)別
參考:https://juejin.cn/post/7077520444332441630、https://juejin.cn/post/7003998535985135652
大概意思就是,實際上自己開發(fā)的話寫哪個都問題不大,如果是在開發(fā)組件庫提供給他人使用時,才需要區(qū)分。
dependencies: 是項目運(yùn)行時的依賴,就是程序上線后仍然需要依賴,比如express, 我們程序就是用express 寫的,如果沒有express, 我們的程序根本無法運(yùn)行,更直白一點(diǎn),dependencies 就是我們在程序開發(fā)的過程中手動require的模塊。進(jìn)行express 開發(fā)時,server.js中,都會寫 var express = require(‘express’), 我們程序直接依賴,所以是dependencies.
devDependencies, 開發(fā)依賴,就是我們在開發(fā)過程中需要的依賴。比如babel, 它只負(fù)責(zé)轉(zhuǎn)換es6+ 到es5, 轉(zhuǎn)換完成后,我們只要轉(zhuǎn)換后的代碼,上線的時候,直接把轉(zhuǎn)換后的代碼部署上線,不需要bebal. 這就是開發(fā)依賴,只在開發(fā)時候起作用, 上線不需要。其實就是我們在使用webpack開發(fā)時,它配置文件里所有的依賴,都是開發(fā)依賴。
4、卸載模塊(npm uninstall)
1. npm uninstall <package_name>
2. npm uninstall -g <package_name> //卸載全局模塊
3. npm uninstall <package_name> --save //卸載并從package.json中刪除
5、查看已安裝的模塊(npm list)
1. npm list --depth=0 //查看該項目所安裝的模塊
2. npm list --depth=0 -g //查看全局安裝的模塊
3. npm list <packagename> //查看是否安裝了該模塊
–depth 表示深度,我們使用的模塊會有依賴,深度為零的時候,不會顯示模塊所依賴的模塊
6、更新模塊(npm update)
1. npm update <package_name>
2. npm update <package_name> -g //更新全局安裝的模塊
7、如何離線安裝 npm 全局包
7.1、直接復(fù)制所有文件
先在外網(wǎng)中安裝好全局包,比如 lighthouse,通過以下命令找到全局包的安裝目錄
1. npm config get prefix
比如目錄為:E:\develop\nodeJs\node_global_modules,此時在該目錄下找到以全局包命名的所有文件,和在該目錄下的 node_modules 目錄下找到以全局包命名即 lighthouse 的文件夾(注意,是在命令行輸出的目錄下的node_modules文件夾下)。將找到的文件和文件夾復(fù)制到內(nèi)網(wǎng)機(jī)器上 npm 全局安裝目錄的對應(yīng)位置上即可。
7.2、先復(fù)制文件再安裝方式
離線安裝 npm 全局包,比如在內(nèi)網(wǎng)中需要安裝一個全局包 lighthouse,步驟如下:
先在外網(wǎng)中安裝好全局包,通過以下命令找到全局包的安裝目錄
1. npm config get prefix
比如目錄為:E:\develop\nodeJs\node_global_modules,此時在該目錄下的 node_modules 目錄下找到以全局包命名即 lighthouse 的文件夾。(注意:是在命令行輸出的目錄下的node_modules文件夾下找)。將找到的文件夾復(fù)制到內(nèi)網(wǎng)機(jī)器上(注意,最好不要直接復(fù)制在npm全局安裝包的目錄下)。
在復(fù)制后的文件夾的根目錄下執(zhí)行以下命令:
1. npm install -g ./包名
3. //比如
4. npm install -g ./lighthouse
執(zhí)行以上命令后,會在 npm 全局包目錄下的 node_modules 文件夾下生成一個快捷方式,該快捷方式將會指向上述的文件夾。
8、npx命令
npx是npm的一個伴生命令,在npm5.2以上已經(jīng)內(nèi)置,可以直接使用,其它版本需要安裝使用。npx的主要功能是讓我們可以在命令行管理操作npm依賴。
npx的執(zhí)行順序機(jī)制是首先會自動檢查當(dāng)前項目中的可執(zhí)行依賴文件(即./node_modules/.bin下面的可用依賴),如果不存在就會去環(huán)境變量 path 中尋找,如果還沒有就會自動安裝,其安裝的依賴位于 node 安裝目錄中的 node_cache/_npx 之中,所以安裝的依賴只是臨時的。
它有如下幾點(diǎn)用途:
一、可以在命令行中直接執(zhí)行項目中安裝的依賴:
比如要在命令行中使用webpack。我們先安裝webpack: npm i webpack --save-dev
如果我們不使用 npx,此時有兩種方式可以調(diào)用 webpack:
1. //第一種:根據(jù)路徑來執(zhí)行webpack的腳本:
2. ./node_modules/.bin/webpack
4. //第二種:使用 npm-run-script 的方式,在package.json的script字段里面執(zhí)行操作:
5. 首先在script字段定義命令:"script": {"webpack": "webpack"},然后在命令行執(zhí)行 npm run webpack
而使用npx就方便多了,可以直接這樣:
1. npx webpack
二:可以一次性安裝臨時使用某個依賴
比如我們只是想要一次性使用 babel-cli 來編譯代碼,并不想要在項目中安裝它:
1. npx babel-cli test.js --presets=es2015,stage2
參考:https://www.cnblogs.com/zhaozhipeng/p/8268563.html
9、nvm安裝使用
參考:http://www.itdecent.cn/p/13c0b3ca7c71
9.1、nvm安裝后vscode不識別node、npm等問題的解決辦法
參考:https://blog.csdn.net/qq_25337221/article/details/110925181