前端差异化项目合并打包
生活随笔
收集整理的這篇文章主要介紹了
前端差异化项目合并打包
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
以前實現差異化或者說項目上線之前會有一個項目的異化合并打包。這種事情以前一般都是運維或者是后端同事去干,用的一般是 ant 或者是自己寫個腳本什么的,在這里我們就不說了【其實是沒有玩過】。但是這樣做的缺點也是很明顯,缺點如下:
上線之前合并的項目前端人員沒法看到或者說要發布到測試環境后才可以看到,對前端哥哥來說實在是不友好,當然了你要是說直接 copy 一份覆蓋后用 live-server 啟動不就可以了嗎?可以是可以但是這樣做太 low 不說,萬一做的時候手一抖又出現好多 bug。所以作為一個有志青年,這種臟活累活還是不要自己去做,我們要工機器也就是工具去幫我們做。
所以就有這篇文章了!
差異化項目特點:
前端打包差異化項目需求:
基于上面的需求我們來一步步實現功能。
準備技術棧:
一些概念聲明
這里咱們先定義一下概念,這樣對接下來的思路說明能更加的清晰些。
思路
基于上面的【一些概念聲明】,我們寫出了下面的步驟:
項目目錄結構
project-merge 平臺名稱|-bin|-dev 開發環境| |-standard 標準項目| |-yunying 具體項目【多加這一步是因為我們平臺是項目定制的,每個平臺都會有很多項目,比如小程序、公眾號、APP、pc官網等等】| |-shenzhen 差異化項目| |-yunying 差異化具體項目|-dist 生產環境| |-shenzhen 打包后的差異化項目|-yunying 差異化具體項目|-gulpfile.js gulp任務管理|-gulpTaskConfig.json 項目配置文件根據上面的項目目錄結構簡單說明:
下面是具體說說 gulpTaskConfig.json 項目配置文件配置。
gulpTaskConfig.json 配置項說明
| taskname | string | 是 | 任務名,用于在命令行輸入,例如: gulp test |
| standard | string | 是 | 指定標準版位置 |
| different | string | 是 | 指定差異化版本路徑 |
| target | string | 是 | 指定打包生產目錄路徑 |
| port | string | 否 | 指定端口位置,用于同時啟動多個任務時需要配置 |
| note | string | 否 | 任務說明 |
| needBabel | boolean | 否 | 是否需要 babel 編譯,默認不開啟,老項目某些代碼不能通過編譯 |
gulpfile.js 配置項說明
var gulp = require('gulp'); var del = require('del'); var path = require('path'); var browserSync = require('browser-sync'); var reload = browserSync.reload; var babel = require('gulp-babel'); //拿到對應的配置項 var gulpTaskConfig = require('./gulpTaskConfig.json');gulpTaskConfig.forEach(item => {const DEL = `${item.taskname}_del`;const BUILD = `${item.taskname}_build_without_js`;const BUILDJS = `${item.taskname}_build_with_js`;const SERVER = `${item.taskname}_server`;//每次打包時,先刪除目標項目內容gulp.task(DEL, function() {del([`${item.target}/**/*`]);});/**合并除js以外文件 */gulp.task(BUILD, function() {gulp.src([`${item.standard}/**/!(*.js)`, `${item.different}/**/!(*.js)`]).pipe(gulp.dest(item.target));});/**babel 編譯js */gulp.task(BUILDJS, function() {const paths = gulp.src([`${item.standard}/**/*.js`, `${item.different}/**/*.js`]);if (item.needBabel) {paths.pipe(babel({presets: ['@babel/env'],}),).pipe(gulp.dest(item.target));} else {paths.pipe(gulp.dest(item.target));}});/**起server */gulp.task(SERVER, function() {browserSync({server: {baseDir: `${item.target}`,reloadDebounce: 1000,},port: item.port || 8080,});});//執行任務gulp.task(item.taskname, function() {gulp.run(DEL, BUILD, BUILDJS, SERVER);gulp.watch(`${item.different}/**`, [BUILD, BUILDJS]).on('change', reload);}); });使用步驟
$ npm install gulp-cli -g
$ npm install
結果
如果有多個項目需要差異化打包,咋整?
步驟:
如:
gulp yunyinggulp weixin具體項目源碼,可以到我的 github 查看傳送門
總結
以上是生活随笔為你收集整理的前端差异化项目合并打包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 异构计算架构师眼中的AI算法(objec
- 下一篇: Eclipse技巧:1.定制toStri