npm,全稱為Node Package Manager,是專為JavaScript生態(tài)系統(tǒng)設(shè)計(jì)的軟件包管理系統(tǒng),尤其與Node.js平臺(tái)緊密關(guān)聯(lián)。作為Node.js的默認(rèn)包管理工具,npm為開(kāi)發(fā)者提供了便捷的方式來(lái)安裝、共享、分發(fā)和管理代碼模塊。
npm作為JavaScript世界不可或缺的基礎(chǔ)設(shè)施,極大地促進(jìn)了代碼復(fù)用和協(xié)作。
一、npm包安裝與管理
1. 安裝包
-
命令:
npm install <package-name>
-
作用: 安裝指定的npm包作為項(xiàng)目依賴。
-
例子:
$ npm install express
默認(rèn)情況下,這會(huì)將包安裝在
node_modules
目錄下,并且如果項(xiàng)目中有package.json
文件,還會(huì)將該包添加到dependencies
字段。 -
全局安裝:
$ npm install -g <package-name>
使用
-g
或--global
參數(shù)進(jìn)行全局安裝,這樣可以在系統(tǒng)全局范圍內(nèi)訪問(wèn)這個(gè)包,而不是僅限于當(dāng)前項(xiàng)目。
2. 保存依賴
-
命令: 自
npm 5.0.0
以后,--save
和--save-dev
已經(jīng)成為默認(rèn)行為,無(wú)需顯式指定。-
npm install <package-name>
相當(dāng)于npm install <package-name> --save
,將包添加到dependencies
。 -
npm install <package-name> --save-dev
將包添加到devDependencies
,適用于開(kāi)發(fā)階段需要但生產(chǎn)環(huán)境中不需要的工具。
-
3. 更新依賴
-
命令:
npm update <package-name>
-
作用: 更新指定包至最新版本(符合
package.json
中指定的版本范圍)。 -
例子:
$ npm update express
4. 查看已安裝包
-
命令:
npm list
- 作用: 列出當(dāng)前項(xiàng)目所有已安裝的依賴及其版本。
-
例子:
$ npm list
- npm list --depth=0: 只列出頂級(jí)依賴,不顯示子依賴。
5. 搜索包
-
命令:
npm search <query>
- 作用: 在npm倉(cāng)庫(kù)中搜索包含給定關(guān)鍵詞的包。
-
例子:
$ npm search express
6. 清除緩存
-
命令:
npm cache clean --force
(舊版)或npm cache clean --all
(新版) - 作用: 清除npm的本地緩存。
-
例子:
$ npm cache clean --force
7. 版本管理
-
命令:
npm version <semver>
-
作用: 更新項(xiàng)目版本號(hào)(遵循語(yǔ)義化版本控制SemVer規(guī)則,如
patch
、minor
、major
)。 -
例子:
$ npm version patch
- npm outdated: 顯示項(xiàng)目中過(guò)時(shí)的依賴包。
8. 卸載包:
- `npm uninstall <package-name>`:卸載本地項(xiàng)目的一個(gè)包。
- `npm uninstall -g <package-name>`:卸載全局安裝的包。
9.設(shè)置和查詢配置:
-
npm config set <key> <value>
:設(shè)置npm配置項(xiàng)。 -
npm config get <key>
:查詢npm配置項(xiàng)的值。 -
npm config ls
:列出所有的npm配置。
10.其他:
-
npm audit
:檢查項(xiàng)目依賴是否存在已知安全漏洞。 -
npm shrinkwrap
或npm lock
(在npm 5+中引入package-lock.json
):鎖定依賴版本,確保每次安裝都得到一致的結(jié)果。
二、npm鏡像源設(shè)置
在國(guó)內(nèi)使用npm(Node Package Manager)時(shí),由于地理位置和網(wǎng)絡(luò)限制,直接從npm官方源下載包可能會(huì)比較慢。為了提升下載速度和穩(wěn)定性,很多國(guó)內(nèi)的公司和組織提供了npm的鏡像服務(wù)。以下是一些國(guó)內(nèi)常用的優(yōu)秀npm鏡像源推薦及使用方法:
-
淘寶NPM鏡像:
-
搜索地址:http://npm.taobao.org/
-
Registry 地址:https://registry.npm.taobao.org/
-
使用方法:
-
臨時(shí)使用:
npm --registry=https://registry.npm.taobao.org install <package-name>
-
持久使用:
npm config set registry https://registry.npm.taobao.org
-
臨時(shí)使用:
-
騰訊云NPM鏡像:
Registry 地址:https://mirrors.cloud.tencent.com/npm/ -
華為云NPM鏡像:
Registry 地址:https://mirrors.huaweicloud.com/repository/npm/ -
阿里云NPM鏡像:
Registry 地址:https://registry.npm.alibaba.com/
-
-
cnpmjs鏡像:
- Registry 地址:http://r.cnpmjs.org/
- 可以通過(guò)cnpm客戶端(一個(gè)基于npm的增強(qiáng)版命令行工具)來(lái)使用它,首先安裝cnpm:
然后直接使用npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm
替代npm
命令。
要檢查當(dāng)前使用的npm鏡像源,可以運(yùn)行以下命令:
npm config get registry
要恢復(fù)到官方源,只需設(shè)置回官方Registry地址:
npm config set registry https://registry.npmjs.org/
注意:由于互聯(lián)網(wǎng)服務(wù)可能發(fā)生變化,請(qǐng)?jiān)谑褂们霸L問(wèn)各鏡像網(wǎng)站確認(rèn)最新的使用指南和地址。同時(shí),不同鏡像的同步策略和服務(wù)狀態(tài)也可能有所差異,請(qǐng)根據(jù)實(shí)際需求選擇合適的鏡像源。
三、npm腳本運(yùn)行
npm(Node Package Manager)允許用戶在package.json文件中定義自定義腳本,這些腳本可以通過(guò)npm run命令來(lái)執(zhí)行。這一特性使得項(xiàng)目管理和自動(dòng)化任務(wù)變得極為方便,比如構(gòu)建項(xiàng)目、運(yùn)行測(cè)試、啟動(dòng)開(kāi)發(fā)服務(wù)器、部署應(yīng)用等等。
- 命令: npm run <script-name>
- 作用: 根據(jù)package.json
中的scripts
字段執(zhí)行預(yù)定義的腳本。
- 例子:
示例1:基本腳本命令
// package.json 文件片段
{
"name": "my-project",
"version": "1.0.0",
"scripts": {
"start": "node app.js", // 啟動(dòng)應(yīng)用程序
"build": "webpack --mode production", // 使用webpack進(jìn)行生產(chǎn)環(huán)境構(gòu)建
"test": "jest", // 運(yùn)行Jest測(cè)試套件
"lint": "eslint .", // 使用ESLint檢查代碼規(guī)范
"serve": "vue-cli-service serve", // Vue CLI項(xiàng)目啟動(dòng)本地開(kāi)發(fā)服務(wù)器
"format": "prettier --write '**/*.{js,jsx,json,css,md}'" // 格式化代碼
},
// ... 其他字段
}
如何運(yùn)行這些腳本?
對(duì)于上述package.json文件中的每個(gè)腳本,你可以通過(guò)如下命令來(lái)運(yùn)行它們:
- 啟動(dòng)應(yīng)用程序:
npm run start
- 其他命令
npm run build //構(gòu)建項(xiàng)目
npm run test //運(yùn)行測(cè)試
npm run lint //檢查代碼規(guī)范
npm run serve //啟動(dòng)本地開(kāi)發(fā)服務(wù)器
npm run format //格式化代碼
-
npm run
會(huì)創(chuàng)建一個(gè)新的shell來(lái)執(zhí)行指定的腳本命令,所以你可以像在shell腳本中那樣使用管道(|
)、重定向(>
或>>
)、邏輯運(yùn)算符(&&
或||
)等。 - 可以通過(guò)
npm run-script <script-name>
的方式來(lái)代替npm run <script-name>
,但后者更為常見(jiàn)和簡(jiǎn)潔。 - 有些腳本名稱具有特殊含義,例如
prebuild
和postbuild
會(huì)在build
腳本前后自動(dòng)執(zhí)行。 - 參數(shù)傳遞:若要向腳本傳遞參數(shù),可以使用
--
分隔符,例如:npm run my-script -- --arg1 value1 --arg2 value2
。
示例2:傳遞參數(shù)和環(huán)境變量
在npm腳本中還可以傳遞參數(shù)和使用環(huán)境變量。
若要向腳本傳遞參數(shù),可以使用–分隔符,例如:npm run my-script – --arg1 value1 --arg2 value2。
"scripts": {
"env-test": "node script.js $npm_config_env_variable",
}
運(yùn)行腳本并傳入環(huán)境變量:
npm run env-test -- --env-variable=value
這里,$npm_config_env_variable
將會(huì)被替換為--env-variable=value
傳入的值。
示例3:組合多個(gè)命令
如果你需要執(zhí)行一系列命令,可以使用&&符號(hào)連接多個(gè)命令,或者使用npm-run-all
等第三方包來(lái)并行或順序執(zhí)行腳本:
"scripts": {
"deploy": "npm run build && npm run deploy-to-server",
}
在上述示例中,npm run deploy
將會(huì)先執(zhí)行build
腳本,成功后再執(zhí)行deploy-to-server
腳本。
通過(guò)這種方式,npm腳本極大地增強(qiáng)了項(xiàng)目自動(dòng)化能力,使得開(kāi)發(fā)者能夠更好地組織和執(zhí)行項(xiàng)目生命周期中的各個(gè)步驟。
三. npm包制作發(fā)布
創(chuàng)建自己的npm包并成功發(fā)布、維護(hù)至npm官方網(wǎng)站,可以連接全球范圍內(nèi)的開(kāi)發(fā)者、包作者與使用者,共同推動(dòng)著Node.js生態(tài)的繁榮與發(fā)展。
-
命令:
npm publish
- 作用: 將當(dāng)前目錄下符合npm發(fā)布要求的包發(fā)布到npm倉(cāng)庫(kù)。
-
前提: 已經(jīng)登錄npm賬戶 (
npm login
),并且當(dāng)前目錄下有合法的package.json
和README.md
等文件。
具體請(qǐng)查看《如何開(kāi)發(fā)創(chuàng)建自己的npm包并成功發(fā)布、維護(hù)至npm官方網(wǎng)站》
以上命令僅覆蓋了npm部分基礎(chǔ)和常用的功能,實(shí)際使用時(shí)還有許多其他命令可供探索,包括但不限于刪除包、查看包信息、鏈接本地包等。建議查閱npm官方文檔獲取完整信息。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-849249.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-849249.html
到了這里,關(guān)于npm包安裝與管理:深入解析命令行工具的全方位操作指南,涵蓋腳本執(zhí)行與包發(fā)布流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!