Я работаю над проектом Laravel / VueJs и пытаюсь скомпилировать мои js-файлы с помощью Laravel mix API.
До сих пор это работало отлично, я просто связывал свои активы, как это:
mix.js('path/to/asset/index.js', 'public/js/apps/my_asset.js')
.js('path/to/asset_2/index.js', 'public/js/apps/my_asset_2.js')
.js('path/to/asset_3/index.js', 'public/js/apps/my_asset_3.js')
...
Но это решение не удовлетворяет, так как я получаю все больше и больше файлов для добавления в список. Поэтому я решил автоматизировать этот процесс.
Что я хочу сделать, так это прочитать содержимое каталога и найти все файлы .js, которые я хочу скомпилировать. Затем я перебираю этот массив и запускаю mix.js()
для каждого файла. Мой код выглядит так:
const readdir = require('readdir-enhanced');
readdir('resources/assets/js/modules/', {deep: 2}, (err, files) => {
files.map(file => {
if (file.match(/index\.js$/)) {
const moduleName = file.replace('/index.js', '');
mix.js(`resources/assets/js/modules/${file}`, `public/js/${env}/apps/${moduleName}_app.js`)
}
});
});
Проблема в том, что mix.js()
не работает, выходной файл не создан.
Когда я console.log()
внутри цикла, это работает, так что я уверен, что захожу внутрь цикла. Я также проверил значения переменных file
, env
и moduleName
, и они верны (поэтому проблема не исходит из моих путей).
Я думаю, mix.js()
не может работать внутри цикла, кто-нибудь уже сталкивался с этой проблемой? И вы нашли решение?
Заранее спасибо :)