Laravel mix версия конкретного файла

Я пытаюсь создать версию определенного файла.

mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css')
.babel([
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js'
], 'public/js/libs.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.version([
'public/js/app.js'
]);

Я пытаюсь версии app.js, но я получаю сообщение об ошибке:
Ошибка: ENOENT: нет такого файла или каталога, откройте «public / js / app.js»

Я также попробовал: app.*.js

1

Решение

Я думаю, что это немного грязно и менее читабельно, чтобы связывать методы таким образом с Laravel Mix. Если вы просто хотите версии файла app.jsВы могли бы изолировать это.

После некоторых испытаний я заметил, что public/ необязательно в начале пути вывода.

Попробуйте что-то вроде этого:

mix.sass('resources/assets/sass/app.scss', 'css/app.css');

mix.js('resources/assets/js/app.js', 'js/app.js');

mix.babel([
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js'
], 'js/libs.js');

mix.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js');

mix.version(['public/js/app.js']);

Надеюсь это поможет.

Редактировать:

TL; DR: version() Метод версии всех файлов, независимо от того, что.

Посмотрев на Versioning исходный код класса пакета laravel-mix Я понял, что невозможно версий только определенных файлов, которые присутствуют в mix-manifest.json файл (то есть файлы, которые вы упомянули в вашем webpack.mix.js).

version() Метод версии всех файлов, независимо от того, что. Необязательный массив в качестве аргумента только указывает, есть ли еще файлы для версии в дополнение ко всем файлам, упомянутым в mix-manifest.json,

В вашем случае mix.version(['public/js/app.js']); Во-первых, строка проверяет все файлы, а во-вторых ищет файл, расположенный по адресу public/js/app.js, Но он не существует, так как он уже был версионирован и файлы в public/js названы [file-name].[hash].js, Вот почему вы получаете эту ошибку:

Ошибка: ENOENT: нет такого файла или каталога, откройте «public / js / app.js»

Например, если ваш webpack.mix.js выглядит так:

mix.sass('resources/assets/sass/app.scss', 'public/css');

mix.js('resources/assets/js/app.js', 'public/js');

mix.version(['resources/assets/js/bootstrap.js']);

Тогда файлы public/css/app.css, public/js/app.js а также resources/assets/js/bootstrap.js будет версионным.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]