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

我的神
  • 966

问题的前提是这样的, 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端口的开发预览 就没反应了。

回复
阅读 751
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏