首页 > 解决方案 > 我可以从 Laravel Mix 中链式调用 shell 命令吗?

问题描述

我使用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's.scripts位?

标签: webpacklaravel-mixlaravel-mix-vue3

解决方案


为此,您可能需要使用事件挂钩

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().

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


推荐阅读