顯示具有 npm 標籤的文章。 顯示所有文章
顯示具有 npm 標籤的文章。 顯示所有文章

2023/03/18

[npm] 解決 npm glob-parent 版本過舊的安全性問題

markdown ### 問題 最近在一個舊的專案採用 webpack 4.x 的版本,最近要修改檔案,要在能正常執行下,想要一併更新一下開發套件版本。 原本環境: - typescript 3.9.5 - ts-loader 7.0.5 - webpack 4.43.0 - webpack-cli 4.9.1 執行 `npm audit fix` 之後,已修正不少套件相依版本,但仍有安全性相依版本的問題,即便依照指令再做一次 fix 的動作仍無法更新修正。
glob-parent  <5.1.2
Severity: high
glob-parent before 5.1.2 vulnerable to Regular Expression Denial of Service in enclosure regex - https://github.com/advisories/GHSA-ww39-953v-wcq6
fix available via `npm audit fix`
node_modules/watchpack-chokidar2/node_modules/glob-parent
  chokidar  1.0.0-rc1 - 2.1.8
  Depends on vulnerable versions of glob-parent
  node_modules/watchpack-chokidar2/node_modules/chokidar
    watchpack-chokidar2  *
    Depends on vulnerable versions of chokidar
    node_modules/watchpack-chokidar2
      watchpack  1.7.2 - 1.7.5
      Depends on vulnerable versions of watchpack-chokidar2
      node_modules/watchpack
        webpack  4.44.0 - 4.46.0
        Depends on vulnerable versions of watchpack
        node_modules/webpack
由於 GitHub 的機器人找出這個安全性問題,而且風險值很高,雖然不更新時,可正確產出結果,但是總是有個風險在。 當然直接升級 webpack v5.x 後,此安全問題可以解決,但是在跑專案時會出錯,以暫時不升版的狀況下,該如何更新版本而不出錯才是當前要解決的問題。

2023/02/06

[npm] 如何檢查 npm 全域套件是否更新至最新版本

markdown ### 問題 趁著更新 macOS 的版本,也順便把一些開發工具更新一波。 ### 檢查 npm 全域套件是否為最新狀態 1. 可直接執行下列指令來作檢查 ``` npx npm-check-updates -g ``` 2. 安裝 npm-check-updates 這個全域套件來作檢查 其實初次呼叫第一個方法即會詢問是否安裝 npm-check-updates 套件 ``` npm install -g npm-check-updates ``` 檢查指令 (執行結果與第一個方法相同) ``` ncu -g ```

2016/03/27

[Node.js] 在 Mac 上使用 Homebrew 更新全域 npm 的解決方法

近期在 Mac 上更新 npm 的全域版本時 (npm update npm -g),造成會出現一些奇怪的問題,在未更新前其實一切都正常

一般作業像是使用 gulp 也都沒有問題,但是若是要顯示一些資訊,例如列出全域的安裝套件,卻會出現一些 ERROR 訊息

後來把整個原本的 /usr/local/lib/node_modules 全部刪掉,重新再安裝 Node 並手動安裝 npm  後,終於又恢復正常啦~ 沒有 ERROR 的訊息感覺才正確!

參考資料:



以下指令說明:

  • 把原本裝的全域套件先列出存到 ~/node_modules.txt
  • 刪除整個 /usr/local/lib/node_modules 資料內容
  • Homebrew 解除安裝 node
  • Homebrew 安裝 node 但不要 npm
  • 建立 ~/.npmrc 的檔案,內容是 prefix=~/.node 即為 npm  的安裝目錄
  • 下載安裝 npm
  • 把 ~/.node/bin 的路徑加到 ~/.bash_profile
  • 重載 ~/.bash_profile
  • 重新安裝原本的全域套件
  • 刪掉暫存的 ~/node_modules.txt 檔案


執行的指令:

ls -1 /usr/local/lib/node_modules > ~/node_modules.txt
sed -e "s,/\+$,," -e "s,^/\+,," ~/node_modules.txt
rm -rf /usr/local/lib/node_modules
brew uninstall node --force node
brew install node --without-npm
echo prefix=~/.node >> ~/.npmrc
curl -L https://www.npmjs.com/install.sh | sh
echo 'export PATH="$HOME/.node/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
for i in `cat ~/node_modules.txt`;do npm install -g $i;done
rm ~/node_modules.txt

2016/02/06

[Node.js] 升級至 Node 版本 5.5.0

今日不知為何興起把 npm 更新, 結果出現 minimatch 模組找不到

npm install -g npm

出現錯誤:

Error: Cannot find module 'minimatch'

怎麼也不能正常行使 npm 的指令

原本開發機上的 Node.js 版本為 4.2.0, 到官網上看到最近的版本為 5.5.0, 乾脆一併升級好了

怪的是更新完仍然無法正常使用 npm 的一些相關指令, 而這回出現的是 npm-cli.js 有錯誤, 指令不能正常運作

列出所有安裝的全域套件

npm ls -g --depth=0

只要能正確列出就沒問題




最終解決方法:

把原本安裝的 Node.js 完全移除, 把所有的 AppData 下的 npm 也刪掉 (全域的套件要全部重新下載過, 可能 5.5 的結構有變更過, 留著舊版的也會出現錯誤)

還是用全部重新來過的方式,才沒有問題,真的是砍掉重練! 順便清掉一些沒在用的全域套件也是好事啦!

至於 Vusial Studio 幫我裝的 vs-tac 的套件,再想辦法裝回來了...

2015/12/07

[Node.js] npm 常用指令

npm (Node package manager) 管理套件常用指令:

查詢版本

npm -v



安裝全域套件

npm install -g [PACKAGE]

安裝特定版本

npm install -g [PACKAGE]@[VERSION]

移除全域套件

npm uninstall -g [PACKAGE]

更新全域套件

npm update -g