凡科 360免費(fèi)建站網(wǎng)站推廣策劃思路的內(nèi)容
npm audit
運(yùn)行安全檢查
主要作用:檢查命令將項(xiàng)目中配置的依賴項(xiàng)的描述提交到默認(rèn)注冊中心,并要求報(bào)告已知漏洞。如果發(fā)現(xiàn)任何漏洞,則將計(jì)算影響和適當(dāng)?shù)难a(bǔ)救措施。如果 fix 提供了參數(shù),則將對包樹應(yīng)用補(bǔ)救措施。
具體參考:https://www.npmrc.cn/quick-start/about-npm.html
這里主要介紹如何使用漏洞掃描的功能
關(guān)于前置環(huán)境治理
事實(shí)上,很多的網(wǎng)上的解決方案都是直接運(yùn)行npm audit
命令,這個(gè)在研發(fā)的角度是沒有問題的
但從研發(fā)效能的角度來看,還需要一些環(huán)境治理的工作:
比如說:我們在構(gòu)建流水線的時(shí)候,需要拉取最新的代碼
但拉取的代碼中,除了業(yè)務(wù)代碼外,還需要一些依賴包
在Node.js中,有三個(gè)重要的文件:node_modules
、package.json
與 package-lock.json
node_modules
:node_modules 文件夾中存放許多的模塊文件及插件,node_modules是安裝node后用來存放用包管理工具下載安裝的包的文件夾。比如webpack、gulp、grunt這些工具。在node.js中模塊與文件是一一對應(yīng)的,也就是說一個(gè)node.js文件就是一個(gè)模塊。
package.json
:概念:package.json就是管理你本地安裝的npm包,用于定義了這個(gè)項(xiàng)目所需要的各種模塊,以及項(xiàng)目的配置信息(比如名稱、版本、許可證等元數(shù)據(jù))?!?/p>
使用場景:在拷貝項(xiàng)目時(shí)不需要拷貝node_modules文件夾,如果拷貝的話會(huì)很慢,所以需要用package.json來記錄依賴版本號,可以解決安裝的依賴與原項(xiàng)目依賴及版本保持一致的問題
package-lock.json
:記錄模塊與模塊之間的依賴關(guān)系,鎖定包的版本,記錄項(xiàng)目所依賴第三方包的樹狀結(jié)構(gòu)和包的下載地址,加快重新安裝的下載速度
具體可以參考:https://blog.csdn.net/weixin_48986139/article/details/124019530
在每一次代碼拉取的過程中,研發(fā)同學(xué)基于多重開發(fā)的考慮,可能不會(huì)把本地的依賴包精確按時(shí)的上傳到代碼倉庫,所以,在建立流水線的過程中,需要首選更新依賴包和模塊與模塊的依賴關(guān)系,再進(jìn)行代碼掃描:
rm -rf ./node_modules ./package-lock.json
npm cache clean --force
tnpm cache clean --force // 如果有內(nèi)部npm包地址,則需要執(zhí)行這一步
npm install --legacy-peer-deps && npx npm-force-resolutions
tnpm install --legacy-peer-deps && npx npm-force-resolutions // 如果有內(nèi)部npm包地址,則需要執(zhí)行這一步
npm install
其中如果沒有tnpm,則需要把對應(yīng)的包放入node_modules文件夾
關(guān)于npm audit使用
這個(gè)時(shí)候,依賴包基本上已經(jīng)安裝完畢了,然后即可運(yùn)行npm audit
但這里,其實(shí)還有很多參數(shù)可以選:
比如:只關(guān)心中等以上漏洞:則可以添加:
npm audit --audit-level=moderate
希望以json格式輸出:
npm audit --json
希望以html格式輸出:
npm i -g npm-audit-html
npm audit --json | npm-audit-html
這里其實(shí)又個(gè)坑,上面的html這里方法,很多地方都有,但很可能使用之后html長這樣:
table是空的:
這里的原因是:
所以要改成:
npm i -g npm-audit-html@beta
npm audit --json | npm-audit-html@beta --output report.html
關(guān)于漏洞修復(fù)
掃描您的項(xiàng)目中的漏洞,并自動(dòng)為有漏洞的依賴項(xiàng)安裝任何兼容更新:
npm audit fix
在不修改節(jié)點(diǎn)模塊的情況下運(yùn)行 audit fix,但仍然更新 pkglock:
npm audit fix --package-lock-only
跳過 devDependencies 更新:
npm audit fix --only=prod
使用 audit fix 安裝 SemVer-major 更新到頂級依賴項(xiàng),而不僅僅是只引入 SemVer-compatible :
npm audit fix --force
進(jìn)行試運(yùn)行以了解 audit fix 將要做什么,并以 JSON 格式輸出安裝信息:
npm audit fix --dry-run --json
這里是一個(gè)npm audit fix的經(jīng)典例子:
https://www.jianshu.com/p/60591cfc6952