摘要:具體實現(xiàn)方法就不多說了,重點是每個模塊中的配置對象能夠深度合并,合并后傳給。有興趣的同學(xué)可以看看我在的這個小項目,可以不關(guān)心具體實現(xiàn),到自己項目中直接使用,兼容了和。
寫Grunt對于很多JS程序員來說,不像寫JS,更像是寫一堆配置代碼,相信用過Grunt的人都深有體會,就拿一個簡答的uglify任務(wù)舉例:
grunt.initConfig({ pkg: grunt.file.readJSON("package.json"), uglify: { task1: { src: "src/task1.js", dest: "build/task1.min.js" }, task2: { src: "src/task2.js", dest: "build/task2.min.js" } } });
隨著項目復(fù)雜度提升,任務(wù)會越來越多,會有task3,task4...等等,uglify的配置就顯得非常冗長,再加上less,coffee等任務(wù),也會有很多個task,最后Gruntfile.js越來越長,越來越難以維護。
這時候就想到,如果能夠?qū)⒚總€task拆分出來成為多帶帶的模塊,多帶帶的js文件,執(zhí)行grunt的時候再將這些模塊合并輸出傳給grunt.initConfig,每個任務(wù)的調(diào)理就會清晰很多,Gruntfile.js也不會很長,用一個tasks文件夾來存放每個task模塊,目錄結(jié)構(gòu)如下:
theProject/ | |------Gruntfile.js |------tasks | |-task1.js | |-task2.js | |-task3.js |
在task1.js中,配置task1對應(yīng)的grunt任務(wù):
module.exports = function(grunt) { // 加載grunt依賴 grunt.loadNpmTasks("grunt-contrib-uglify"); grunt.loadNpmTasks("grunt-contrib-less"); // 注冊task1任務(wù) grunt.registerTask("task1", [ "uglify:task1", "less:task1" ]); gruntConfig = { uglify: { task1: { src: "src/task1.js", dest: "build/task1.min.js" } }, less: { task1: { src: "src/task1.less", dest: "build/task1.css" } } }; return gruntConfig; };
這樣每一個grunt任務(wù)就從統(tǒng)一的Gruntfile.js拆分開來,對應(yīng)一個task模塊,接下來就是重寫Gruntfile.js,讓它能夠合并所有任務(wù)模塊,再配置到grunt.initConfig中去。
具體實現(xiàn)方法就不多說了,重點是每個task模塊中的gruntConfig配置對象能夠深度合并,合并后傳給grunt.initConfig。
有興趣的同學(xué)可以看看我在Github的這個小項目,可以不關(guān)心具體實現(xiàn),clone到自己項目中直接使用,兼容了coffee和js。
當(dāng)我把它用到工作項目中,寫grunt舒服了太多,再也不比辛辛苦苦拖上拖下找代碼了。
另外,啰嗦一句,Grunt提供了很多有用的工具方法,卻經(jīng)常被我們忽略,可以在官網(wǎng)看到。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/87506.html
摘要:但是在使用開發(fā)的過程中還是感覺不太順手,本文將闡述我是如何對進行一步步改造以適應(yīng)個人和團隊開發(fā)需求的。所以說,我們?nèi)绾卧诒WC的設(shè)計原則以及項目規(guī)范性上,對其進行簡化改造,是我這里需要解決的問題。 從Vue換到React+Redux進行開發(fā)已經(jīng)有半年多的時間,總的來說體驗是很好的,對于各種邏輯和業(yè)務(wù)組件的抽象實在是方便的不行,高階組件,洋蔥模型等等給我?guī)砹撕芏嗑幊趟枷肷系奶嵘5窃谑?..
摘要:常見前端構(gòu)建工具的分類和對比是附帶的包管理器,是內(nèi)置的一個功能,允許在文件里面使用字段定義任務(wù)在這里,一個屬性對應(yīng)一段腳本,原理是通過調(diào)用去運行腳本命令。 前文 端技術(shù)范圍不斷發(fā)展,前端開發(fā)不僅限于直接編寫html,css和javascript,Web應(yīng)用日益龐大,代碼也更加龐大,因此許多新的思想(例如模塊化和工程化等)和框架(React和Vue等),以及新的語言(Es6 TypeSc...
摘要:在講解之前先回顧一下筆者在項目開發(fā)中的工作流變化時代此時工作流大致為結(jié)合插件處理視圖處理樣式等庫此時由于依賴少手動引入各種標簽結(jié)合調(diào)試界面時代利用指令服務(wù)控制器將邏輯拆分為多個文件利用編譯會將分為全局樣式和組件樣式下載各種依賴此時任需要手動 在講解 webpack 之前先回顧一下筆者在項目開發(fā)中的工作流變化. jquery 時代 此時工作流大致為 jquery 結(jié)合插件處理視圖 bo...
摘要:所以,打包工具就出現(xiàn)了,它可以幫助做這些繁瑣的工作。打包工具介紹僅介紹款主流的打包工具,,,,以發(fā)布時間為順序。它定位是模塊打包器,而屬于構(gòu)建工具。而且在其他的打包工具在處理非網(wǎng)頁文件比如等基本還是需要借助它來實現(xiàn)。 本文當(dāng)時寫在本地,發(fā)現(xiàn)換電腦很不是方便,在這里記錄下。 前端的打包工具 打包工具可以更好的管理html,css,javascript,使用可以錦上添花,不使用也沒關(guān)系...
閱讀 2323·2021-10-08 10:04
閱讀 1097·2021-09-03 10:40
閱讀 1150·2019-08-30 15:53
閱讀 3309·2019-08-30 13:13
閱讀 2925·2019-08-30 12:55
閱讀 2278·2019-08-29 13:21
閱讀 1330·2019-08-26 12:12
閱讀 2755·2019-08-26 10:37