Могу ли я вызвать команду командной строки из Laravel Mix?

#webpack #laravel-mix #laravel-mix-vue3

#webpack #laravel-mix #laravel-mix-vue3

Вопрос:

Я использую 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 бите ‘s?

Ответ №1:

Возможно, вы захотите использовать перехватчики событий для этой цели.

В 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() для запуска произвольного кода после выполнения mix. Не было перехвата событий для запуска кода перед выполнением микса.

Комментарии:

1. Отлично! большое спасибо (и добро пожаловать в StackOverflow!) Я нашел документы для child_process.exec и обратите внимание, что в Mix v5 вы должны использовать then() вместо after() .