springboot-vue后台管理项目快速打包

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq975309666/article/details/87806736

首先前端配置环境变量(修改文件package.json)

  1. 根目录添加.env.${mode} 文件(结合启动脚本:vue-cli-service --mode test build 或者 vue-cli-service serve --mode development build)
  2. vue.config.js先修改baseUrl(静态资源地址)和outputDir(导出目录)

执行打包脚本 node package.js [prod|test|其他=test]

var exec = require('child_process').exec;
var fs = require('fs')
var path = require('path');
var dir = path.resolve(__dirname);
var yml = dir + '/src/main/resources/application.yml'
var pom = dir + '/pom.xml'

/**
 * 替换某个文件的内容
 * @param file
 * @param originPt
 * @param str
 */
function replaceText(file, originPt, str) {
    fs.readFile(file, 'utf8', function (err, files) {
        var result = files.replace(originPt, str);
        fs.writeFile(file, result, 'utf8', function (e) {
            console.log(`>>> 替换${originPt} ===> ${str}成功`)
        }, function (err) {
            if (err) return console.log(err);
        });
    })
}

/**
 * 打包后台
 * @param env
 */
function doPackage(env) {
    console.log(`>>> 【后台】打包${env}环境`)
    if (env === 'prod') {
        replaceText(pom, /<packaging>jar<\/packaging>/g, '<packaging>war</packaging>')
        replaceText(yml, /active: dev/g, 'active: prod')
    } else {
        replaceText(pom, /<packaging>war<\/packaging>/g, '<packaging>jar</packaging>')
        replaceText(yml, /active: prod/g, 'active: dev')
    }
    800
    exec('call mvn clean', function (err, stdout, stderr) {
        console.log('>>> call mvn clean')
        exec('call mvn package -DskipTests', function (err, stdout, stderr) {
            console.log('>>> call mvn package -DskipTests')
            console.log('>>> 打包成功')
        })
    })
}

function doPackageWithFontEnd(env) {
    let buildEnv = 'test'
    if (env === 'prod') {
        buildEnv = 'prod'
    }
    exec(`cd ./admin&&call npm run build:${buildEnv}`, function (err, stdout, stderr) {
        console.log(`>>> cd ./admin&&call npm run build:${buildEnv}`)
        exec('call cd ../', function (err, stdout, stderr) {
            console.log(`>>> cd ..`)
            doPackage(env)
        })
    })
}


/**
 *
 * @param arg \
 * 不存在时:只打包后台jar模式
 * arg==='prod'时:生产模式
 * arg==='其他'时:打包前端页面,默认为test
 */
function package(arg) {
    if (arg) {
        doPackageWithFontEnd(arg)
    } else {
        doPackage(arg)
    }
}

/**
 * 
 * @type {*[]}
 */
var arguments = process.argv.splice(2);
var arg;
if (arguments && arguments[0]) {
    arg = arguments[0]
}
package(arg)

猜你喜欢

转载自blog.csdn.net/qq975309666/article/details/87806736