0

我在 Laravel 5.4 中使用 Laravel Mix,我想合并到普通文件并添加版本控制。

阅读它说的文档

version 方法将自动将唯一的哈希附加到所有编译文件的文件名中,从而更方便地清除缓存

它有效地做到了它所说的。但是是否有任何解决方法来获得带有版本控制的最终组合文件?

实际上,我想将一些已编译的文件与其他普通文件结合在一起,并将所有内容组合在一个版本化文件中。

编辑:

我正在使用的代码如下

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.

4

2 回答 2

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');

或者

结合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 函数进行排序以获取相应目录中的所有文件。然后我从数组中得到第一个文件名,在这个例子中是'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>
于 2019-11-19T11:12:30.513 回答
1

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();
于 2020-09-01T17:23:32.460 回答