国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

用npm-run實現自動化任務的方法示例

2019-11-19 12:17:43
字體:
來源:轉載
供稿:網友

自動構建javascript有不少好工具。不過其實很少有人知道,npm run命令就能很好地完成這一任務,配置起來也很簡單。

James Halliday在博客上分享了使用npm run自動化任務的一些經驗:

script

npm 會在項目的 package.json 文件中尋找 scripts 區域,其中包括npm testnpm start等命令。

其實npm testnpm startnpm run testnpm run start的簡寫。事實上,你可以使用npm run來運行scripts里的任何條目。

使用npm run的方便之處在于,npm會自動把node_modules/.bin加入$PATH,這樣你可以直接運行依賴程序和開發依賴程序,不用全局安裝了。只要npm上的包提供命令行接口,你就可以直接使用它們,方便吧?當然,你總是可以自己寫一個簡單的小程序。

構建javascript

為了便于組織代碼和利用npm上的包,寫代碼的時候往往使用module.exportsrequire()。browserify可以將這些一起打包成單一的腳本。使用browserify很簡單,只需在package.json中加入一個['build-js']條目,類似這樣:

"build-js": "browserify browser/main.js > static/bundle.js"

如果是用于生產環境,還需要壓縮一下。我們只需要將uglify-js加入devDependency,然后直接通過管道傳遞一下即可:

"build-js": "browserify browser/main.js | uglifyjs -mc > static/bundle.js"

監視 javascript

為了能在修改文件之后自動重新生成javascript文件,只需將上面的browserify命令換成watchify并加上一些參數。

"watch-js": "watchify browser/main.js -o static/bundle.js -dv"

這里加了-d-v兩個參數,這樣就可以看到詳細的調試信息。

構建CSS

cat就可以搞定:

"build-css": "cat static/pages/*.css tabs/*/*.css > static/bundle.css"

監視CSS

和上面用 watchify 監視 javascript 類似,我們用catw監視CSS文件的改動:

"watch-css": "catw static/pages/*.css tabs/*/*.css -o static/bundle.css -v"

序列化子任務

很簡單,npm run每個子任務,然后用&&連接起來就成。

"build": "npm run build-js && npm run build-css"

并行子任務

類似地,我們用&并行子任務:

"watch": "npm run watch-js & npm run watch-css"

完整的package.json例子

將上面提到的內容組合起來,package.json大致就是這個樣子:

{ "name": "my-silly-app", "version": "1.2.3", "private": true, "dependencies": { "browserify": "~2.35.2", "uglifyjs": "~2.3.6" }, "devDependencies": { "watchify": "~0.1.0", "catw": "~0.0.1", "tap": "~0.4.4" }, "scripts": { "build-js": "browserify browser/main.js | uglifyjs -mc > static/bundle.js", "build-css": "cat static/pages/*.css tabs/*/*.css", "build": "npm run build-js && npm run build-css", "watch-js": "watchify browser/main.js -o static/bundle.js -dv", "watch-css": "catw static/pages/*.css tabs/*/*.css -o static/bundle.css -v", "watch": "npm run watch-js & npm run watch-css", "start": "node server.js", "test": "tap test/*.js" }}

生產環境下,只需運行npm run build。如果是本地開發,就用npm run watch

你也可以坐下擴展。比方說,如果你希望在運行start前先運行build,那么你只需寫上這么一行:

"start": "npm run build && node server.js"

也許你想同時啟動watcher?

"start-dev": "npm run watch & npm start"

當事情變得非常復雜的時候

如果你發現在單個scripts條目中塞了一大堆命令,那你可以考慮重構一下,把一些命令放到別的地方,比如/bin。

你可以用任何語言編寫這個腳本,比如bashnodeperl。只需要在腳本上加上合適的#!行。還有,別忘了chmod +x。

#!/bin/bash(cd site/main; browserify browser/main.js | uglifyjs -mc > static/bundle.js)(cd site/xyz; browserify browser.js > static/bundle.js)
"build-js": "bin/build.sh"

Windows

你可能會吃驚的是,相當多的類bash語法可以在Windows上工作。不過我們至少還需要讓;&可以正常工作。

James Halliday分享過一些在Windows兼容的經驗,這些經驗也適用于本文的主題,可以參考。此外要推薦下win-bash,這是一個很方便的Windows平臺上的bash實現。

總結

James Halliday希望這個使用npm run的方式能吸引一部人對現有的前端自動化任務工具不滿意的人。James Halliday比較偏好unix體系下的那些學習曲線陡峭的工具,比如git,或者類似 npm 這種在 bash 的基礎上提供極簡界面的工具。也就是說,不需要很多儀式化操作和配合的工具。非常簡單的工具,已經足夠勝任通常的任務。

如果你對npm run風格不感冒。你也許可以考慮下Makefiles,一個穩定而簡單,不過多少有點怪異的替代品。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 莲花县| 岳阳市| 老河口市| 教育| 张家川| 建始县| 阳信县| 姚安县| 呼伦贝尔市| 石景山区| 宜春市| 家居| 清苑县| 贡觉县| 慈利县| 土默特左旗| 庄浪县| 南平市| 昌黎县| 万盛区| 曲靖市| 尉氏县| 安塞县| 焉耆| 什邡市| 临澧县| 大宁县| 云梦县| 开江县| 太康县| 平邑县| 荣成市| 铜鼓县| 大化| 湛江市| 汾阳市| 陈巴尔虎旗| 阳信县| 繁峙县| 宿松县| 玉树县|