我在Laravel 5.4中使用Laravel Mix,我想结合普通文件并添加版本控制。
阅读它所说的文件
版本方法会自动附加一个唯一的哈希值 所有已编译文件的文件名,允许更方便的缓存 无效化
它有效地做了它所说的。但是有没有解决方法来获得带版本控制的最终组合文件?
实际上我想将一些编译文件与其他普通文件一起加入,并将所有内容合并到一个版本化文件中。
修改
我使用的代码如下所示
mix.sass('resources/assets/sass/app.scss', 'public/css')
.combine(['public/css/app.css', 'other/component/file.css'], 'public/css/all.css')
.version();
我想获得一个版本化的all.css
文件。即all.d41d8cd98f00b204e9800998ecf8427e.css
之类的东西。
但我得到的是app.css
的版本化版本和all.css
的非版本化版本。
答案 0 :(得分:1)
CSS和JS文件的版本控制/缓存清理
Webpack.Mix
将css(使用mix.styles)和js(使用mix.scripts)文件合并为两个文件后,我得到了all.css和all.js。
要添加版本控制,我执行了以下操作:
var timestamp = Date.now();
mix.copy('public/css/all.css', 'public/css/all/all.'+ timestamp + '.css');
mix.copy('public/js/all.js', 'public/js/all/all.'+ timestamp + '.js');
OR
当您将css和js文件合并时,直接将其写入,例如:
mix.styles([
'public/css/app.css',
'public/css/custom.css'], 'public/css/all/all.'+ Date.now() + '.css').
mix.scripts([
'public/js/app.js',
'public/js/custom.js'], 'public/js/all/all.'+ Date.now() + '.js').
刀片布局文件:
我创建了/ css / all /和/ js / all /目录。我使用scandir() php function进行排序以获取相应目录中的所有文件。然后,我从数组中获得了第一个文件名,在本例中为“ all.1574160664960.css”。
@php($css_files = scandir('css/all/', 1))
<link href="/css/all/{{ $css_files[0] }}" rel="stylesheet">
@php($js_files = scandir('js/all/', 1))
<script src="/js/all/{{ $js_files[0] }}"></script>
答案 1 :(得分:0)
https://laravel-mix.com/docs/5.0/versioning
在webpack.mix.js中:
const mix = require('laravel-mix');
mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.sass', 'public/css')
.version();