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