版本控制将Laravel 5.4中的CSS文件与Laravel Mix

时间:2017-02-13 16:13:55

标签: laravel laravel-mix

我在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的非版本化版本。

2 个答案:

答案 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();