在laravel-mix中替代elixir`mix.scriptsIn`

时间:2017-03-06 18:53:41

标签: laravel laravel-5.4 laravel-elixir laravel-mix

Laravel 5.4引入了laravel-mix 使用elixir,我有一个任务将所有供应商文件加载到一个特定的:

elixir(function (mix) {
  mix.stylesIn('public/vendor/css', 'public/css/vendor.css');

  mix.scriptsIn('public/vendor/js', 'public/js/vendor.js');
}

是否可以使用laravel-mix进行相同的操作?

使用mix.js('/path/to/folder', 'public/js/vendor.js')我收到错误:

Error: EISDIR: illegal operation on a directory

2 个答案:

答案 0 :(得分:1)

如果它对某人有帮助,laravel-mix有一个//js files mix.combine(['path/to/folder/js/*'], 'public/js/combined.js'); //and //css files mix.combine(['path/to/folder/css/*'], 'public/css/combined.css'); 函数,可以用于css和js文件:

mix.scripts(...)

如果每个文件的加载顺序对您来说很重要,那么最好使用{{1}}或其他选项。

我刚在这里找到它:https://laracasts.com/discuss/channels/laravel/mix-combine-all-js-in-folder

答案 1 :(得分:0)

只需使用.extract()方法。

<强> e.g

mix
    .js('resources/assets/js/app.js', 'public/js/app.js')
    .extract([
        'jquery',
    ]);

如果您不使用CommonJS require或ES2015 import,并且将所有库捆绑在一个文件中,则可以使用.js()方法:

mix
    .js('resources/assets/js/vendor.js', 'public/js/vendor.js');

您还可以使用.scripts()连接文件:

mix.scripts([
    'public/js/admin.js',
    'public/js/dashboard.js'
], 'public/js/all.js');

不要忘记在你的html中注入vendor.js文件:

<script src="{{ mix('js/vendor.js') }}"></script>