vue-cli-service serve 之中,再执行另一个打包命令 该怎么办??

发布于 2022-09-13 00:21:04 字数 1584 浏览 30 评论 0

问题的前提是这样的, vue多模块项目(打包是命令循环那种), 所有模块都引用了一个公共文件,
这个公共文件需要独立打包成一个 库。然后 所有模块在html里引入它。

package.json

  "scripts": {
    "serve": "vue-cli-service serve",
    "start": "npm run serve",
    "build": "node ./build/build.js",
    "build:all": "node ./build/build.js --all",
    "build:nomock": "node ./build/build.js -m nomock --all",
    "build:base": "vue-cli-service build --target lib --dest  ./static/cmobilebase  --name cmobilebase  ./cmobilebase/index.js",
    "lint": "vue-cli-service lint"
  },

vue.config.js 里面 会判断开发模式,然后执行如下 代码。。目的是:希望监听某个文件夹代码改变,然后自动 执行另一个打包 命令"build:base"。

const fs = require('fs'),
    md5 = require('md5');
const path = require('path');
let preveMd5 = null,
    fsWait = false
const filePath = path.join(__dirname, '../cmobilebase/');    
console.log(`正在监听 ${filePath}`);
function watch(){
        var exec=require('child_process').execSync;    
      fs.watch(filePath,{recursive:true},(event,filename)=>{
        if (filename){
            if (fsWait) return;
            fsWait = setTimeout(() => {
                fsWait = false;
            }, 100)
            var currentMd5 = md5(fs.readFileSync(filePath + filename))

            console.log(currentMd5,preveMd5)
            if (currentMd5 == preveMd5){
                return 
            }
            preveMd5 = currentMd5
            console.log(`${filePath}文件发生更新`)
            
            exec('npm run build:base',{stdio:'inherit'});

        }
    })  
}



module.exports = {watch}

但是实际效果是,文件改变并打包后,8080端口的开发预览 就没反应了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文