Run command after webpack build

后端 未结 7 1773
名媛妹妹
名媛妹妹 2020-12-04 15:29

I\'d like to run webpack in --watch mode, and run a shell command after each build that synchronizes a folder to another one.

I found this plugin that t

7条回答
  •  执笔经年
    2020-12-04 15:45

    Webpack 4

    As of today (April 11, 2018), most of the plugins I've tried use the deprecated API resulting in this warning:

    DeprecationWarning: Tapable.plugin is deprecated. Use new API on `.hooks` instead
    

    It pleased me to find that you can easily write an ad-hoc webpack plugin (docs).

    In your webpack.config.js file:

    const exec = require('child_process').exec;
    
    module.exports = {
    
      // ... other config here ...
    
      plugins: [
    
        // ... other plugins here ...
    
        {
          apply: (compiler) => {
            compiler.hooks.afterEmit.tap('AfterEmitPlugin', (compilation) => {
              exec('', (err, stdout, stderr) => {
                if (stdout) process.stdout.write(stdout);
                if (stderr) process.stderr.write(stderr);
              });
            });
          }
        }
      ]
    };
    

    If you'd rather use spawn to get real-time or "live" data from your script, this illustrates the basic usage:

    const spawn = require('child_process').spawn;
    
    const child = spawn('');
    child.stdout.on('data', function (data) {
        process.stdout.write(data);
    });
    child.stderr.on('data', function (data) {
        process.stderr.write(data);
    });
    

提交回复
热议问题