我可以从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.scripts位?

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

Laravel Mix v6中,您可以像这样使用事件挂钩(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中,执行混合后必须使用事件挂钩(v5(mix.then()来运行任意代码。在执行混合之前,没有用于运行代码的事件挂钩。

最新更新