5

我在使用 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: [] }
};
4

3 回答 3

4

I run into the same problem. It appears that version() overides the build folder at each call.

You need to call version only once at the end with all the files, like the following:

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

});
于 2015-02-09T01:06:44.190 回答
1

我也遇到了版本控制问题,发现目前存在elixir 版本控制的错误(注意:在撰写本文时,Elixir 版本 <= v0.14.0)

看起来当连接很多文件(或者更可能是输出文件很大)时,它不会与其余文件一起进行版本控制。

看起来您可以gulp version单独运行,并且它们将获得版本控制。如果您遇到此问题,那么gulpgulp 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

于 2015-03-21T07:58:42.160 回答
1

我的问题有 2 个问题,BeS 的解决方案确实有效,但是当我连接多个供应商文件时又产生了另一个问题:

  1. mix.less 和 mix.scripts 被异步调用。我是在程序上考虑的。
  2. 正如@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']);
});
于 2015-02-09T07:34:33.737 回答