我可以从 Laravel Mix 链式调用 shell 命令吗?

Can I chain-call a shell command from Laravel Mix?

我使用 Laravel Mix - 这是一种轻松使用 webpack 的灵活方式。

当 运行 watch 时,只要文件发生变化,它就会重新编译开发模式构建。但是,为了使用这些,有一个外部构建步骤——例如一个项目需要调用 drush cc css-js .

有没有办法从 webpack.mix.js 文件或其他文件执行此操作?

有点像:

mix()
 .js('src/app.js', 'dist/')
 .vue()
 .shell('drush cc css-js') // ««« something like this?
;

或者它可能必须进入 package.json.scripts 位?

为此,您可能需要使用 Event Hooks

Laravel Mix v6中,你可以这样使用Event Hooks (v6)

const { exec } = require('child_process');

mix.js('src/app.js', 'dist/')
   .vue()
   .after(() => {
        exec('drush cc css-js');
    });

如果要在编译资源之前执行某些操作,请使用 mix.before() 而不是 mix.after()

Edit:正如 OP 在下面指出的那样,在 Laravel Mix v5 中,您必须使用 Event Hook (v5) mix.then() 到 运行 执行混音后的任意代码。在执行混合之前,运行 代码没有事件挂钩。