本文轉(zhuǎn)載自微信公眾號「全棧成長之路」,作者山月行。轉(zhuǎn)載本文請聯(lián)系全棧成長之路公眾號。

成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站建設、成都做網(wǎng)站與策劃設計,沐川網(wǎng)站建設哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設10余年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:沐川等地區(qū)。沐川做網(wǎng)站價格咨詢:18982081108
用了兩天,終于把這篇文章趕完了。有興趣的可以加我微信好友 shanyue94 進行交流。這篇文章也可以在山月的博客上找到,正文開始
眾所周知,一個 Javasript 項目的腳本類工具,可以使用 package.json 中的 scripts 字段來組織,簡單來說,這就是 npm script。
最典型最常用約定俗成的一個是 npm start,用以啟動項目:
- {
- "scripts": {
- "start": "next"
- }
- }
約定速成的還有很多,如下所列
約定速成的親兒子腳本自然和其它第三方腳本不一樣,如果需要執(zhí)行它,直接使用 npm 前綴即可,如 npm start,那其它腳本呢?那就需要 npm run 前綴了。而 yarn 就沒這么多講究了,一視同仁。
- $ npm run
- $ npm run-script dev
- # 為了簡單方便,等同于
- $ npm run dev
- # yarn
- $ yarn dev
以上是眾所周知的,以下講一講有可能不是眾所周知的
運行: npm run dev 與 npm start 的區(qū)別
對于一個「純生成靜態(tài)頁面打包」的前端項目而言,它們是沒有多少區(qū)別的:生產(chǎn)環(huán)境的部署只依賴于構(gòu)建生成的資源,更不依賴 npm scripts??梢?如何部署前端項目[1]。
使用 create-react-app 生成的項目,它的 npm script 中只有 npm start
- {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test",
- "eject": "react-scripts eject"
- }
使用 vuepress 生成的項目,它的 npm script 中只有 npm run dev
- {
- "dev": "vuepress dev",
- "build": "vuepress build"
- }
在一個「面向服務端」的項目中,如 next、nuxt 與 nest。dev 與 start 的區(qū)別趨于明顯,一個為生產(chǎn)環(huán)境,一個為開發(fā)環(huán)境
dev: 在開發(fā)環(huán)境啟動項目,一般帶有 watch 選項,監(jiān)聽文件變化而重啟服務,此時會耗費大量的 CPU 性能,不宜放在生產(chǎn)環(huán)境
start: 在生產(chǎn)環(huán)境啟動項目
在 nest 項目中進行配置
- {
- "start": "nest start",
- "dev": "nest start --watch"
- }
運行:Script Hooks -> 如何把新項目快速跑起來
新人入職新上手項目,如何把它跑起來,這是所有人都會碰到的問題:所有人都是從新手開始的。
有可能你會脫口而出:npm run dev/npm start,但實際工作中,處處藏坑,往往沒這么簡單。
但即便是十分謹慎,也有可能遇到以下幾個叫苦不迭、浪費了一下午時間的坑:
因此,設置一個少的 script,可以很好地避免后人踩坑,更重要的是,可以避免后人罵你
- {
- "scripts": {
- "start": "npm run dev",
- "config": "node assets && node config",
- "build": "webpack",
- // 設置一個 dev 的鉤子,在 npm run dev 前執(zhí)行,此處有可能不是必須的
- "predev": "npm run build",
- "dev": "webpack-dev-server --inline --progress"
- }
- }
Hooks
在 npm script 中,對于每一個命令都有 Pre/Post 鉤子,分別在命令執(zhí)行前后執(zhí)行
- npm run