From d10a6cb1781c446119aa3302b9e0bbfe4211c8ee Mon Sep 17 00:00:00 2001 From: YeMingfei666 <1619116647@qq.com> Date: Mon, 18 Aug 2025 17:22:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=89=93=E5=8C=85=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gulpfile copy.js | 102 ++++++++++++++++++++++++++++ gulpfile.js | 128 ++++++++++++++++-------------------- static/config/index-prod.js | 2 +- 3 files changed, 159 insertions(+), 73 deletions(-) create mode 100644 gulpfile copy.js diff --git a/gulpfile copy.js b/gulpfile copy.js new file mode 100644 index 0000000..d048ef8 --- /dev/null +++ b/gulpfile copy.js @@ -0,0 +1,102 @@ +var gulp = require('gulp'); +var $ = require('gulp-load-plugins')(); +var path = require('path'); +var del = require('del'); + +var distPath = path.resolve('./dist'); +var version = ''; // 版本号 +var versionPath = ''; // 版本号路径 +var env = ''; // 运行环境 + +// 创建版本号(年月日时分) +(function () { + var d = new Date(); + var yy = d.getFullYear().toString().slice(2); + var MM = d.getMonth() + 1 >= 10 ? (d.getMonth() + 1) : '0' + (d.getMonth() + 1); + var DD = d.getDate() >= 10 ? d.getDate() : '0' + d.getDate(); + var h = d.getHours() >= 10 ? d.getHours() : '0' + d.getHours(); + var mm = d.getMinutes() >= 10 ? d.getMinutes() : '0' + d.getMinutes(); + version = yy + MM + DD + h + mm; + versionPath = distPath + '/' + version; +})(); + +// 编译 +gulp.task('build', $.shell.task(['node build/build.js'])); + +// 创建版本号目录 +gulp.task('create:versionCatalog', gulp.series('build', function () { + return gulp.src(`${distPath}/static/**/*`) + .pipe(gulp.dest(`${versionPath}/static/`)) +})) + +// 替换${versionPath}/static/js/manifest.js window.SITE_CONFIG.cdnUrl占位变量 +gulp.task('replace:cdnUrl', gulp.series('create:versionCatalog', function () { + return gulp.src(`${versionPath}/static/js/manifest.js`) + .pipe($.replace(new RegExp(`"${require('./config').build.assetsPublicPath}"`, 'g'), 'window.SITE_CONFIG.cdnUrl + "/"')) + .pipe(gulp.dest(`${versionPath}/static/js/`)) +})) + +// 替换${versionPath}/static/config/index-${env}.js window.SITE_CONFIG['version']配置变量 +gulp.task('replace:version', gulp.series('create:versionCatalog', function () { + return gulp.src(`${versionPath}/static/config/index-${env}.js`) + .pipe($.replace(/window.SITE_CONFIG\['version'\] = '.*'/g, `window.SITE_CONFIG['version'] = '${version}'`)) + .pipe(gulp.dest(`${versionPath}/static/config/`)) +})) + +// 合并${versionPath}/static/config/[index-${env}, init].js 至 ${distPath}/config/index.js +gulp.task('concat:config', gulp.series('replace:version', function () { + return gulp.src([`${versionPath}/static/config/index-${env}.js`, `${versionPath}/static/config/init.js`]) + .pipe($.concat('index.js')) + .pipe(gulp.dest(`${distPath}/config/`)) +})) + +// 清空文件历史 +gulp.task('clean', function () { + console.log('--clean--') + // del([`${distPath}/static`, `${versionPath}/static/config`]); + // return del([versionPath]) + return del([`${distPath}`]) +}) + +gulp.task('build-end', function () { + console.log('--builed-end--') + // del([`${distPath}/static`, `${versionPath}/static/config`]); + return del([`${distPath}/static`, `${versionPath}/static/config`]); +}) + +env = process.env.npm_config_qa ? 'qa' : process.env.npm_config_uat ? 'uat' : 'prod'; + +gulp.task('default', + gulp.series('clean', + gulp.parallel('create:versionCatalog', 'replace:cdnUrl', 'replace:version', 'concat:config'), + 'build', 'build-end') +) + + + + +/* gulp.task('default', gulp.series('clean', function (done) { + // 获取环境配置 + env = process.env.npm_config_qa ? 'qa' : process.env.npm_config_uat ? 'uat' : 'prod' + // 开始打包编译 +// 开始打包编译 + gulp.task('default', gulp.series('build','create:versionCatalog', 'replace:cdnUrl', 'replace:version', 'concat:config', function (done) { + // 清除, 编译 / 处理项目中产生的文件 + del([`${distPath}/static`, `${versionPath}/static/config`]) + done(); + })) +})); */ + +/* +gulp.task('default', gulp.series('clean', function (done) { + // 获取环境配置 + env = process.env.npm_config_qa ? 'qa' : process.env.npm_config_uat ? 'uat' : 'prod' + // 开始打包编译 +// 开始打包编译 + gulp.task('default', gulp.series('build','create:versionCatalog', 'replace:cdnUrl', 'replace:version', 'concat:config', function (done) { + // 清除, 编译 / 处理项目中产生的文件 + del([`${distPath}/static`, `${versionPath}/static/config`]) + done(); + })) +})); +*/ diff --git a/gulpfile.js b/gulpfile.js index d048ef8..5a48fad 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -3,21 +3,23 @@ var $ = require('gulp-load-plugins')(); var path = require('path'); var del = require('del'); +// 先设置环境变量,确保任务定义时可以正确访问 +var env = process.env.npm_config_qa ? 'qa' : process.env.npm_config_uat ? 'uat' : 'prod'; + var distPath = path.resolve('./dist'); var version = ''; // 版本号 var versionPath = ''; // 版本号路径 -var env = ''; // 运行环境 // 创建版本号(年月日时分) (function () { - var d = new Date(); - var yy = d.getFullYear().toString().slice(2); - var MM = d.getMonth() + 1 >= 10 ? (d.getMonth() + 1) : '0' + (d.getMonth() + 1); - var DD = d.getDate() >= 10 ? d.getDate() : '0' + d.getDate(); - var h = d.getHours() >= 10 ? d.getHours() : '0' + d.getHours(); - var mm = d.getMinutes() >= 10 ? d.getMinutes() : '0' + d.getMinutes(); - version = yy + MM + DD + h + mm; - versionPath = distPath + '/' + version; + var d = new Date(); + var yy = d.getFullYear().toString().slice(2); + var MM = (d.getMonth() + 1).toString().padStart(2, '0'); + var DD = d.getDate().toString().padStart(2, '0'); + var h = d.getHours().toString().padStart(2, '0'); + var mm = d.getMinutes().toString().padStart(2, '0'); + version = yy + MM + DD + h + mm; + versionPath = path.join(distPath, version); // 使用path.join更安全 })(); // 编译 @@ -25,78 +27,60 @@ gulp.task('build', $.shell.task(['node build/build.js'])); // 创建版本号目录 gulp.task('create:versionCatalog', gulp.series('build', function () { - return gulp.src(`${distPath}/static/**/*`) - .pipe(gulp.dest(`${versionPath}/static/`)) -})) + return gulp.src(path.join(distPath, 'static', '**', '*')) + .pipe(gulp.dest(path.join(versionPath, 'static'))); +})); -// 替换${versionPath}/static/js/manifest.js window.SITE_CONFIG.cdnUrl占位变量 +// 替换cdnUrl占位变量 gulp.task('replace:cdnUrl', gulp.series('create:versionCatalog', function () { - return gulp.src(`${versionPath}/static/js/manifest.js`) - .pipe($.replace(new RegExp(`"${require('./config').build.assetsPublicPath}"`, 'g'), 'window.SITE_CONFIG.cdnUrl + "/"')) - .pipe(gulp.dest(`${versionPath}/static/js/`)) -})) + const assetsPublicPath = require('./config').build.assetsPublicPath; + return gulp.src(path.join(versionPath, 'static', 'js', 'manifest.js')) + .pipe($.replace(new RegExp(`"${assetsPublicPath}"`, 'g'), 'window.SITE_CONFIG.cdnUrl + "/"')) + .pipe(gulp.dest(path.join(versionPath, 'static', 'js'))); +})); -// 替换${versionPath}/static/config/index-${env}.js window.SITE_CONFIG['version']配置变量 +// 替换version配置变量 gulp.task('replace:version', gulp.series('create:versionCatalog', function () { - return gulp.src(`${versionPath}/static/config/index-${env}.js`) - .pipe($.replace(/window.SITE_CONFIG\['version'\] = '.*'/g, `window.SITE_CONFIG['version'] = '${version}'`)) - .pipe(gulp.dest(`${versionPath}/static/config/`)) -})) + return gulp.src(path.join(versionPath, 'static', 'config', `index-${env}.js`)) + .pipe($.replace(/window.SITE_CONFIG\['version'\] = '.*'/g, `window.SITE_CONFIG['version'] = '${version}'`)) + .pipe(gulp.dest(path.join(versionPath, 'static', 'config'))); +})); -// 合并${versionPath}/static/config/[index-${env}, init].js 至 ${distPath}/config/index.js +// 合并配置文件 gulp.task('concat:config', gulp.series('replace:version', function () { - return gulp.src([`${versionPath}/static/config/index-${env}.js`, `${versionPath}/static/config/init.js`]) - .pipe($.concat('index.js')) - .pipe(gulp.dest(`${distPath}/config/`)) -})) + return gulp.src([ + path.join(versionPath, 'static', 'config', `index-${env}.js`), + path.join(versionPath, 'static', 'config', 'init.js') + ]) + .pipe($.concat('index.js')) + .pipe(gulp.dest(path.join(distPath, 'config'))); +})); // 清空文件历史 gulp.task('clean', function () { - console.log('--clean--') - // del([`${distPath}/static`, `${versionPath}/static/config`]); - // return del([versionPath]) - return del([`${distPath}`]) -}) + console.log('--clean--'); + return del([distPath]); +}); +// 构建结束清理 gulp.task('build-end', function () { - console.log('--builed-end--') - // del([`${distPath}/static`, `${versionPath}/static/config`]); - return del([`${distPath}/static`, `${versionPath}/static/config`]); -}) + console.log('--builed-end--'); + return del([ + path.join(distPath, 'static'), + path.join(versionPath, 'static', 'config') + ]); +}); -env = process.env.npm_config_qa ? 'qa' : process.env.npm_config_uat ? 'uat' : 'prod'; - -gulp.task('default', - gulp.series('clean', - gulp.parallel('create:versionCatalog', 'replace:cdnUrl', 'replace:version', 'concat:config'), - 'build', 'build-end') -) - - - - -/* gulp.task('default', gulp.series('clean', function (done) { - // 获取环境配置 - env = process.env.npm_config_qa ? 'qa' : process.env.npm_config_uat ? 'uat' : 'prod' - // 开始打包编译 -// 开始打包编译 - gulp.task('default', gulp.series('build','create:versionCatalog', 'replace:cdnUrl', 'replace:version', 'concat:config', function (done) { - // 清除, 编译 / 处理项目中产生的文件 - del([`${distPath}/static`, `${versionPath}/static/config`]) - done(); - })) -})); */ - -/* -gulp.task('default', gulp.series('clean', function (done) { - // 获取环境配置 - env = process.env.npm_config_qa ? 'qa' : process.env.npm_config_uat ? 'uat' : 'prod' - // 开始打包编译 -// 开始打包编译 - gulp.task('default', gulp.series('build','create:versionCatalog', 'replace:cdnUrl', 'replace:version', 'concat:config', function (done) { - // 清除, 编译 / 处理项目中产生的文件 - del([`${distPath}/static`, `${versionPath}/static/config`]) - done(); - })) -})); -*/ +// 主任务 - 按正确顺序执行 +gulp.task('default', gulp.series( + 'clean', + 'build', + 'create:versionCatalog', + gulp.parallel('replace:cdnUrl', 'replace:version'), + 'concat:config', + 'build-end', + function (done) { + console.log(`构建完成,环境: ${env},版本号: ${version}`); + done(); + } +)); diff --git a/static/config/index-prod.js b/static/config/index-prod.js index 421c9c0..2d7e6b0 100644 --- a/static/config/index-prod.js +++ b/static/config/index-prod.js @@ -5,7 +5,7 @@ window.SITE_CONFIG = {}; // api接口请求地址 - window.SITE_CONFIG['baseUrl'] = 'https://ditanxiong.gomyorder.cn/czg'; + window.SITE_CONFIG['baseUrl'] = 'https://web.hnsiyao.cn/czg'; // cdn地址 = 域名 + 版本号 window.SITE_CONFIG['domain'] = './'; // 域名