這篇文章主要介紹了跑npm scripts的方式是什么的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇跑npm scripts的方式是什么文章都會有所收獲,下面我們一起來看看吧。
專注于為中小企業(yè)提供做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)當(dāng)陽免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
每個前端項(xiàng)目都有 npm scripts,我們會用 npm scripts 來組織編譯、打包、lint 等任務(wù)。
這些命令行工具的 package.json 里都會有個 bin 字段,來聲明有哪些命令:
npm install 這個包以后,就會放到 node_modules/.bin 目錄下:
這樣我們就可以通過 node ./node_modules/.bin/xx 來跑不同的工具了。
我們也可以用 npx 來跑,比如 npx xx,它的作用就是執(zhí)行 node_modules/.bin 下的本地命令,如果沒有的話會從 npm 下載然后執(zhí)行。
當(dāng)然,最常用的還是放到 npm scripts 里:
這樣就直接 npm run xxx 跑就行了。
npm scripts 本質(zhì)上還是用 node 來跑這些 script 代碼,所以調(diào)試他們和調(diào)試其他 node 代碼沒啥區(qū)別。
也就是可以這樣跑:
在 .vscode/launch.json 的調(diào)試文件里,選擇 node 的 launch program:
用 node 執(zhí)行 node_modules/.bin 下的文件,傳入?yún)?shù)即可:
其實(shí)還有更簡單的方式,VSCode Debugger 對 npm scripts 調(diào)試的場景做了封裝,可以直接選擇 npm 類型的調(diào)試配置:
直接指定運(yùn)行的命令即可:
比如我們就用這個 create-react-app 創(chuàng)建的 react 項(xiàng)目來嘗試下 npm scripts 的調(diào)試:
先去 node_modules/.bin 下這個文件里打個斷點(diǎn):
然后點(diǎn)擊 debug 啟動:
你會發(fā)現(xiàn)會執(zhí)行 scripts 下的 start 模塊:
我們再去 start 下打個斷點(diǎn):
代碼執(zhí)行到這里斷住:
這個 config 就是 webpack 的配置:
再往下走,會發(fā)現(xiàn)啟動了一個 server:
我們在 server 啟動的回調(diào)函數(shù)里打個斷點(diǎn),看看瀏覽器是怎么打開的:
點(diǎn)擊 step into 進(jìn)入這個斷點(diǎn),然后單步執(zhí)行,會走到這樣的代碼:
依次通過 osascript 來啟動這些瀏覽器,啟動失敗的話,try catch 里直接忽略了:
這些瀏覽器 hover 上去就可以看到:
釋放斷點(diǎn),你就會發(fā)現(xiàn)瀏覽器打開了
這樣,我們不就梳理了一遍 react-scripts start 的流程么?
總結(jié)一下就是這樣的:
根據(jù)輸入的 start 命令,執(zhí)行 scripts/start 模塊
根據(jù)配置,創(chuàng)建 webpack 的 Compiler 對象
創(chuàng)建 WebpackDevServer
server 啟動之后,啟動瀏覽器打開 url
打開 url 的實(shí)現(xiàn)就是通過 osascripts 依次嘗試那些瀏覽器
這樣調(diào)試完一遍,我們就對 npm run start 有了更深入的認(rèn)識。
而且,調(diào)試的方式跑 script 和直接命令行 npm run start 沒啥區(qū)別。
要說區(qū)別,唯一的區(qū)別可能就是這個:
默認(rèn)調(diào)試模式下,輸出的內(nèi)容會在 Debug Console 面板顯示:
但這個也可以改:
可以切換成 integratedTerminal,那就會輸出在 terminal 了:
這樣就和平時 npm run start 執(zhí)行沒了任何區(qū)別,而且還可以斷點(diǎn)調(diào)試,它不香么?
我們再來看個例子,比如 vue cli 創(chuàng)建的 vue 項(xiàng)目,在 vue.config.js 里可以改 webpack 配置:
但如果你想知道默認(rèn)的配置是啥呢?console.log 么?
console.log 打印大對象可不是個好主意,它是這樣的:
有的同學(xué)說用 JSON.stringify,那個更難看,特別長的一串。
如果你會了調(diào)試 npm scripts 呢?
你就可以加一個 npm 類型的調(diào)試配置:
然后打個斷點(diǎn),debug 來跑:
關(guān)于“跑npm scripts的方式是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“跑npm scripts的方式是什么”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。