【问题标题】:Can I chain-call a shell command from Laravel Mix?我可以从 Laravel Mix 中链式调用 shell 命令吗?
【发布时间】:2020-11-14 11:20:35
【问题描述】:

我使用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 位?

【问题讨论】:

    标签: webpack laravel-mix laravel-mix-vue3


    【解决方案1】:

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

    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() 在执行混合后运行任意代码.在执行混合之前没有事件挂钩来运行代码。

    【讨论】:

    • 太棒了!非常感谢(欢迎来到 StackOverflow!)我找到了 docs for child_process.exec 并注意在 Mix v5 中你必须使用 then() 代替 after()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多