最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用npm-run實(shí)現(xiàn)自動化任務(wù)的方法示例

 更新時間:2019年01月14日 10:49:01   作者:weakish  
這篇文章主要介紹了用npm-run實(shí)現(xiàn)自動化任務(wù)的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

James Halliday在博客上分享了使用npm run自動化任務(wù)的一些經(jīng)驗:

script

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

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

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

構(gòu)建javascript

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

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

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

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

監(jiān)視 javascript

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

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

這里加了-d-v兩個參數(shù),這樣就可以看到詳細(xì)的調(diào)試信息。

構(gòu)建CSS

cat就可以搞定:

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

監(jiān)視CSS

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

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

序列化子任務(wù)

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

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

并行子任務(wù)

類似地,我們用&并行子任務(wù):

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

完整的package.json例子

將上面提到的內(nèi)容組合起來,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"
 }
}

生產(chǎn)環(huán)境下,只需運(yùn)行npm run build。如果是本地開發(fā),就用npm run watch

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

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

也許你想同時啟動watcher?

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

當(dāng)事情變得非常復(fù)雜的時候

如果你發(fā)現(xiàn)在單個scripts條目中塞了一大堆命令,那你可以考慮重構(gòu)一下,把一些命令放到別的地方,比如/bin

你可以用任何語言編寫這個腳本,比如bash、nodeperl。只需要在腳本上加上合適的#!行。還有,別忘了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

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

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

總結(jié)

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

如果你對npm run風(fēng)格不感冒。你也許可以考慮下Makefiles,一個穩(wěn)定而簡單,不過多少有點(diǎn)怪異的替代品。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Express框架實(shí)現(xiàn)簡單攔截器功能示例

    Express框架實(shí)現(xiàn)簡單攔截器功能示例

    這篇文章主要介紹了Express框架實(shí)現(xiàn)簡單攔截器功能,結(jié)合實(shí)例形式分析了express框架攔截器相關(guān)功能與使用方法,需要的朋友可以參考下
    2023-05-05
  • node ftp上傳文件夾到服務(wù)器案例詳解

    node ftp上傳文件夾到服務(wù)器案例詳解

    這篇文章主要介紹了node ftp上傳文件夾到服務(wù)器的視線方法,結(jié)合具體實(shí)例分析了node.js調(diào)用ftp模塊進(jìn)行文件上傳的相關(guān)配置、連接、path路徑操作與文件傳輸實(shí)現(xiàn)方法,需要的朋友可以參考下
    2023-04-04
  • Node.js通過配置?strict-ssl=false解決npm安裝卡住問題

    Node.js通過配置?strict-ssl=false解決npm安裝卡住問題

    使用npm安裝依賴包是常見的任務(wù)之一,有時會遇到安裝卡住的問題,本文就來介紹一下通過配置?strict-ssl=false解決npm安裝卡住問題,感興趣的可以了解一下
    2024-12-12
  • Nodejs做文本數(shù)據(jù)處理實(shí)現(xiàn)詳解

    Nodejs做文本數(shù)據(jù)處理實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了Nodejs做文本數(shù)據(jù)處理實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • node.js中的require使用詳解

    node.js中的require使用詳解

    本文通過幾個具體實(shí)例來分析講解了node.js中require的使用方法,非常的詳盡,這里推薦給大家
    2014-12-12
  • 使用Nodejs開發(fā)微信公眾號后臺服務(wù)實(shí)例

    使用Nodejs開發(fā)微信公眾號后臺服務(wù)實(shí)例

    這篇文章主要介紹了使用Nodejs開發(fā)微信公眾號后臺服務(wù)實(shí)例,在這個實(shí)例中,主要使用到了express, wechat, mongodb, monk等模塊,需要的朋友可以參考下
    2014-09-09
  • 深入理解node.js http模塊

    深入理解node.js http模塊

    這篇文章主要介紹了深入理解node.js http模塊,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Node.js API詳解之 Error模塊用法實(shí)例分析

    Node.js API詳解之 Error模塊用法實(shí)例分析

    這篇文章主要介紹了Node.js API詳解之 Error模塊用法,結(jié)合實(shí)例形式分析了Node.js API中Error模塊相關(guān)功能、函數(shù)、用法及操作注意事項,需要的朋友可以參考下
    2020-05-05
  • 帶你了解NodeJS事件循環(huán)

    帶你了解NodeJS事件循環(huán)

    這篇文章主要介紹NodeJS事件循環(huán),Node中代碼從上到下同步執(zhí)行,在執(zhí)行過程中會將不同的任務(wù)添加到相應(yīng)的隊列中,那具體有的循環(huán)又是怎么回事呢,限免現(xiàn)編就帶大家學(xué)習(xí)該詳細(xì)內(nèi)容,需要的朋友也可以參考一下
    2022-02-02
  • Node.js中常用設(shè)計模式的使用方法總結(jié)

    Node.js中常用設(shè)計模式的使用方法總結(jié)

    設(shè)計模式是由經(jīng)驗豐富的程序員在日積月累中抽象出的用以解決通用問題的可復(fù)用解決方案,它提供了標(biāo)準(zhǔn)化的代碼設(shè)計方案提升開發(fā)體驗,本文主要來和大家討論一下Node.js中設(shè)計模式的重要性并提供一些代碼示例,感興趣的可以了解下
    2023-10-10

最新評論

康保县| 正定县| 平舆县| 温泉县| 揭东县| 都匀市| 辽宁省| 武隆县| 银川市| 汤阴县| 光山县| 华亭县| 博乐市| 南召县| 隆化县| 柳江县| 名山县| 清河县| 龙口市| 富裕县| 故城县| 万载县| 石泉县| 承德县| 德清县| 长岭县| 吉首市| 兴义市| 永顺县| 九江县| 凤山市| 平顺县| 遵义县| 亳州市| 玛沁县| 紫云| 衡山县| 咸丰县| 苏州市| 南木林县| 阜城县|