美文网首页
springboot-vue后台管理项目快速打包

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

作者: 丶君为红颜酔 | 来源:发表于2019-01-28 11:01 被阅读0次

    首先前端配置环境变量(修改文件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)
    

    相关文章

      网友评论

          本文标题:springboot-vue后台管理项目快速打包

          本文链接:https://www.haomeiwen.com/subject/litajqtx.html