npm 實用知識大合集

image

前言

npm 做爲前端一大利器,那必須是要好好掌握,在平時的開發中,用的最多的應該就是 npm install,不過,這麼強大的工具,做用確定不止如此。html

現將本身所知道的有關 npm 的知識給整理出來,大都是平時用的不少的,整合出來不只是方便查找,更重要的是身爲社會主義的接班人,少先隊員所應具有的良好品質也在時刻提醒我,要爲社會做出應有的貢獻。寫到這,我不由低頭一看,胸口的紅領巾好像更紅了,太陽公公好像也在向我微笑點頭。前端

在開始前還要再說一下,合集會持續更新,由於知識老是不斷在補充的。但也不會頻繁更新,通常會攢個大再放,持續更新,建議收藏,文章會放在個人 blog 文集裏,blog 裏面仍是會快速更新的啦。vue

再多嘴一句,windows 的同窗能夠試試 windows 的命令行神器 cmder,這能夠減小不少使用 windows 原生命令行時奇怪的錯誤。node

命令合集

強烈建議最好不要使用 cnpm,會有各類奇怪的 bug,相對 cnpm,給 npm 設置 registry 是一個好選擇,使用 nrm 是更好的選擇ios

npm init 建立基礎 package.json

# 會用命令行交互式完成建立
npm init
# 直接略過交互式,使用 defaultValue 建立 package.json
npm init -y

node 運行時內存溢出

在運行內存比較小的電腦上可能你會碰到內存溢出致使程序被 kill 的場景,使用 --max-old-space-size 或許能夠解決這個問題。git

{
  "scripts": {
    "start": "node --max-old-space-size=4076 index.js"
  }
}

固然,若是說 package.json 中 scripts 中的命令不少,你就須要在每一個地方增長該指令,已經有 issue 提到了該問題,或許在 node 以後的版本會解決這個問題。github

Add max-old-space-size to npmrcnpm

再者,咱們不只能夠在 scripts 中添加,還能夠在執行命令中添加,以下,一個命令行類庫的 bin 目錄下的執行文件。json

#!/usr/bin/env node --max-old-space-size=4096

const cli = require("../src").default;
cli.run();

npm publish 發佈 npm 包

這裏只列出發佈的步驟,具體怎麼寫 npm 包能夠到網上搜搜相關內容,各路大佬已經整理了很多,博主就不在此班門弄斧了。axios

須要注意的是,咱們須要先把 registry 切換到 npm 起始源,而不能使用 taobao 的,taobao 是同步了 npm 包的國區資源,實際資源仍是來自 npm,因此須要先發布到 npm 再等 taobao 自動同步(順即可以刷一波下載量)。

# 切換 registry 至 npm
nrm use npm

# 第一次使用 npm publish
# 若是你是第一次使用 npm publish,你須要添加帳號
npm adduser

# 非第一次使用 npm publish
# 登錄帳戶,這一步其實也能夠不用作,直接看 whoami 便可
npm login

# 查看當前帳戶
npm whoami
# 發佈
npm publish

npm view 查看某一庫詳細信息

對打了 tag 的庫仍是挺方便的,能夠查看對應 tag 名稱,若是須要安裝某一個具體 tag 的庫,可使用 npm install ${packageName}@${tag}

npm view @vue/cli

# 查看 view 以後,安裝指定 tag
npm install -D @vue/cli@next

npm root 獲取當前項目的 node_modules 路徑

能夠在命令行類庫中使用,會向上查找 node_modules 的路徑,並返回絕對路徑。

可是也是有 bug 的,若是你在空文件夾下使用 npm root,會直接以當前路徑加上 node_modules 返回,即便你的目錄下並無 node_modules 文件夾

npm root

舉個例子,若是在很深的路徑中,須要使用當前項目依賴的 node_modules/.bin 中的指令,咱們有兩個辦法找到目錄

const moduleRootPath = path.join(process.cwd(), "node_modules");
const moduleRootPath = execa.sync("npm", ["root"]);

npm list 查看全局安裝的模塊

npm list -g --depth=0

刪除全局安裝的全部模塊

慎用,除非你知道你在作什麼,不然不要用

rm -rf /usr/local/lib/node_modules

npm cache 清除 npm 緩存

報錯 npm resource busy or locked 時候,或者其餘莫名報錯的時候,能夠試試看。

# force 表強制清除緩存
npm cache clean --force

好庫推薦

排名不分前後,會按照博主的記憶順序來記錄。其中有命令行工具,還有好用的三方庫推薦,大抵不會有主流三大框架的三方庫(大家懂得確定比我多),會以 node 類庫爲主。

yarn 依賴處理工具

這麼好用的東西不說太多了,大部分人應該都用着,對標 npm,能夠更好的處理項目依賴(可是也發現有狀況是 npm 能夠安裝成功,yarn 安裝反而報錯)。

甩上命令,一個字就是衝。

npm install yarn -g

# 安裝 devdep 依賴
yarn add -D @types/node
# 安裝 dep 依賴
yarn add axios
# 安裝 peerDep 依賴
# peerDep 依賴意思是,若是你安裝了我,那你最要也安裝 XXX
yarn add -P vue
# 全局安裝依賴
yarn global add @vue/cli

mirror-config-china 自動配置國區鏡像

在下載某些庫的時候發現即便配置了 registry 的時候,下載仍是異常緩慢,甚至半天都不動一下?你可能須要這個。

這個庫會自動配置不少第三方庫(例如 electron)的地址到國區鏡像,雖然也能夠在須要的時候手動配置,可是,有一鍵操做那還要啥自行車!下載速度嗖嗖嗖。

npm install -g mirror-config-china

nrm 管理 registry

當你常常須要切換 registry 源(好比你須要 npm publish 代碼,這時候就須要切換到 npm 起始源),這個工具能夠幫忙。

npm install -g nrm

# 添加 npm registry 至 nrm
nrm add npm http://registry.npmjs.org
# 添加 taobao registry 至 nrm
nrm add taobao https://registry.npm.taobao.org
# 使用 taobao 的 registry
nrm use taobao
# 使用 npm 的 registry
nrm use npm

http-server 快起靜態服務

能夠很方便的在本地起一個靜態服務,固然還有不少參數,這裏就很少作演示,只作個拋磚引玉,具體能夠查看如下文檔。

http-server

npm install -g http-server

舉個小例子,當你興高采烈開發完一個項目打包至 dist,想要看看效果如何,你就能夠進入 dist 文件夾,而後啓動 http-server 服務,他會默認以 index.html 做爲入口啓動靜態服務,而且還會監聽文件改變。

cd dist
http-server

nvm 管理多版本 node

雖然可能很少見,可是你仍是會碰到須要在同一臺電腦上運行不一樣版本的 node 這種問題,這個庫能夠解決。

nvm

# 查看當前使用的 node 版本
nvm current
# 安裝 node 指定版本
nvm install 12.14.0
# 切換 node 版本
nvm use 12.14.0
# 使用 12.14.0 版本的 node 運行 index.js
nvm run 12.14.0 index.js

後語

最近頭髮的脫落速度和瑞幸咖啡的下跌速度相似,忘性也愈來愈大,常常會代碼寫着寫着就忘了剛纔我要作什麼,對於一件事情之前可以保持四五個小時的專一,如今思惟很容易打岔,想着,啊是否是年紀大了,之前歷來沒有對歲數有過恐慌,可是看着公司裏優秀的新生代,難免會有些焦慮。如何才能不焦慮?不是廢寢忘食的工做,而是應該讓本身成爲不可替代的那我的,感情是如此,工做亦是如此。

這裏不是蹭熱點,司徒正美大大的消息想必你們或多或少都瞭解了一些,可惜,說是天才的隕落也不爲過。因此你們在平時的開發學習中,除了要關注技術細節,更要多多關注本身的身體。賺錢的機會有不少,但惟有健康的身體才能支撐起你偉大的理想。

ps: 寫完以後發現本身瞭解的也很少,寫的挺雜的,若是各位大佬有私貨能夠偷偷摸摸分享給我,我琢磨琢磨整理整理給加上去,蟹蟹。

頁腳

代碼即人生,我甘之如飴。

技術不斷在變
頭腦一直在線
前端路漫漫
咱們下期見

我在這裏 gayhub@jsjzh 歡迎你們來找我玩兒。

歡迎小夥伴們直接加我,拉你進羣一塊兒學習前端呀,記得備註一下你是從哪裏看到個人文章的哦~

wechat

相關文章
相關標籤/搜索