<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
指令碼是 專案真正的入口 。
無論你是剛剛 clone
完公司的專案,抑或是你準備在開源社群做一點微小的貢獻;你需要做的第一件事,永遠是:
開啟 package.json
,看看 scripts
裡都有哪些指令碼。
build
、bundle
、build:doc
;dev
、serve
、start
;test
;當你執行 npm run serve
或者 npm run dev
時,你可以開始開發偵錯,推進專案的進度。
但使用指令碼的過程中,也有不便之處。
是什麼?往下看。
王鹹魚是一家小公司的前端骨幹,經常負責前端專案重構、架構調整、打包優化等方面的工作。
但他經常遇到這樣的問題:
如果我要先執行 build:umd
、再執行 build:esm
、再執行 build:docs
,應該怎麼做?
就像這樣:
想了想,他覺得自己可以了,於是寫了如下程式碼:
npm run build:umd && npm run build:esm && npm run build:docs
不過專案組的小夥伴很快就提出了質疑:
"build:umd
和 build:esm
沒有前置依賴關係啊,應該可以同時構建,這樣能提升構建效率。"
王鹹魚一聽,覺得很有道理。
構建過程就變成了這樣:
這下讓王鹹魚為難了,居然沒想到快捷的辦法,只能引入了 gulp
,並寫了一些額外的 js
指令碼才解決這個問題。
那麼,有更好的辦法嗎?
這天晚上,王鹹魚加班到深夜,一位正在巡邏的髮際線奇高的保安大哥,偶然掃了一眼他的螢幕,用低沉的聲音告訴他:
"傻小子,用 npm-run-all
啊!"
新世界的大門從此開啟。
上面那個讓王鹹魚抓耳撓腮的問題,瞬間被解決了!
他只寫了一行程式碼:
{ "scripts": { "build": "npm-run-all -p build:esm build:umd -s build:docs" } }
以上指令碼執行後會有什麼效果呢?
build:umd
和 build:esm
首先會非同步同時執行;build:docs
“完美!”
王鹹魚伸了個懶腰,終於可以下班了。
但是第二天,又有組員提出了疑問:“這仨完全可以同時執行啊!”
王鹹魚聽了,覺得很有道理,用了三秒鐘就實現了效果,僅僅刪了幾個程式碼:
{ "scripts": { "build": "npm-run-all -p build:esm build:umd build:docs" } }
sooooooo!easy!
npm-run-all
是什麼?
官方如此自我介紹:
一個 CLI
工具,可以並行、或者按順序執行多個 npm
指令碼。
對,它可以輕鬆地組織 “npm
指令碼” 的執行順序。
npmjs: www.npmjs.com/package/npm…
github: github.com/mysticatea/…
yarn add -D npm-run-all # or npm install -D npm-run-all
通過 npm-run-all
這個命令,你可以隨意組織指令碼。它有很多選項,其中最關鍵的是這兩個:
npm-run-all -s a b -p c d
沒錯,就是 -s
和 -p
;
s
,便是 serial
,指 “序列”。p
,便是 parallel
,指 “並行”。通過不斷組合以上兩個選項,可以定義出多種執行順序,比如:
npm-run-all a b --parallel c d --serial e f --parallel g h i
a
和 b
c
和 d
e
和 f
g
、h
、i
npm-s
可以理解為 npm-run-all --serial
的簡寫。
npm-s a b c
先效果是:序列執行 a
,b
,c
;
npm-p
npm-p
可以理解為 npm-run-all --parallel
的簡寫。
npm-p a b c
先效果是:並行執行 a
,b
,c
;
先假設,如果同時存在 build:umd
、build:esm
、build:docs
,你想讓它們三個並行執行。
你可能會寫這樣的程式碼:
{ "scripts": { "build": "npm-p build:umd build:esm build:docs" } }
但是呢,就很長,很難看,有沒有更好的辦法?
有,用萬用字元:
{ "scripts": { "build": "run-p "build:*"" } }
舒服!這樣就行了,完美!
除了上面介紹的順序編排外,npm-run-all
還提供了很多實用選項:
--max-parallel
最大並行數限制。比如你有20個構建物要打包,但 CPU
能力有限,你希望同一時間最多有三個在構建,就可以用它;--continue-on-error
顧名思義,出錯了繼續執行;--race
參考 Promise.race
....
這也是它相比於直接寫 shell
最大的優勢所在;
以上就是npm指令碼庫組織在專案中的地位詳解的詳細內容,更多關於npm指令碼庫組織的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45