Laravel Elixir - Невозможно использовать.version с css и несколькими js-файлами.
У меня проблемы с Laravel Elixir .version('xxxxxx.js')
, По какой-то причине кажется, что я не могу использовать .version
с файлами JS или в дополнение к .css
или даже иметь несколько версий файлов JS.
elixir(function(mix) {
/**
* My Less
*/
mix.less('app.less').version('public/css/app.css');
/**
* Vendor Scripts
*/
mix.scripts([
'jquery/dist/jquery.js'
], 'public/js/vendor.js', 'resources/assets/bower_components/').version('public/js/vendor.js');
/**
* My Scripts
*/
mix.scripts(['app.js','app2.js'], 'public/js/app.js', 'resources/assets/scripts').version('public/js/vendor.js');
});
Мой конфиг laravel-elixir выглядит следующим образом:
var config = {
production: !! util.env.production,
srcDir: 'app',
assetsDir: 'resources/assets/',
cssOutput: 'public/css',
jsOutput: 'public/js',
bowerDir: 'resources/assets/bower_components',
tasks: [],
watchers: { default: {} },
duplicate: [],
concatenate: { css: [], js: [] }
};
3 ответа
Я сталкиваюсь с той же проблемой. Похоже, что version()
переходит в build
папка при каждом звонке.
Вам нужно позвонить version
только один раз в конце со всеми файлами, как показано ниже:
elixir(function(mix) {
/**
* My Less
*/
mix.less('app.less')
/**
* Vendor Scripts
*/
.scripts([
'jquery/dist/jquery.js'
], 'public/js/vendor.js', 'resources/assets/bower_components/')
/**
* My Scripts
*/
.scripts(['app.js','app2.js'], 'public/js/app.js', 'resources/assets/scripts')
/**
* My Versioning
*/
.version([
'public/css/app.css',
'public/js/vendor.js', // BTW you are calling version twice on this file
'public/js/app.js'
])
});
Было 2 проблемы с моим вопросом, и решение BeS сработало, но создало другую проблему, когда я объединил несколько файлов поставщика:
- mix.less и mix.scripts вызываются асинхронно. Я думал об этом процедурно.
- Как уже упоминалось @BeS, мне нужно в конце вызвать версию.
Мое решение - Комбинация решения BeS, но с поправками, объединяющими методы, обеспечивающие объединение всех сценариев и т. Д. И т. Д.... перед вызовом .version
:
elixir(function(mix) {
mix.less('app.less')
.scripts([
'jquery/dist/jquery.js',
'other.js',
'another.js'
], 'public/js/vendor.js','resources/assets/bower_components/')
.scripts(['app.js','app2.js'], 'public/js/app.js', 'resources/assets/scripts')
.version(['public/css/app.css', 'public/js/app.js', 'public/js/vendor.js']);
});
У меня также была проблема с версионированием, и я обнаружил, что в настоящее время существует ошибка с версионированием elixir. (примечание: на момент написания Elixir версия <= v0.14.0)
Похоже, что при объединении большого количества файлов (или, скорее всего, выходной файл большой), тогда он не будет версионирован с остальными файлами.
Похоже, вы можете бежать gulp version
отдельно, и они получат версии. Если вы столкнулись с этой проблемой, то gulp
или же gulp watch
не буду этого делать.
Вот мой файл gulp, vendor.js был скомпилирован, но не версионирован. Это даже не последний файл версии:
var elixir = require('laravel-elixir');
elixir(function(mix) {
mix.sass('app.scss')
.scripts([
'react/react-with-addons.min.js',
'jquery/dist/jquery.min.js',
'bootstrap-sass-official/assets/javascripts/bootstrap.js'
], 'public/js/vendor.js', 'resources/assets/bower')
.scripts(['app.js'], 'public/js/app.js', 'resources/assets/js')
.version([
'css/app.css',
'js/vendor.js',
'js/app.js'
]);
});
Бег gulp version
после этого будет версия его.
Обновить:
Это, кажется, исправлено>= v0.14.2