我可以从 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()
到 运行 执行混音后的任意代码。在执行混合之前,运行 代码没有事件挂钩。
我使用 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()
到 运行 执行混音后的任意代码。在执行混合之前,运行 代码没有事件挂钩。