【问题标题】:How to include minified javascript file in production generated by Laravel Mix?如何在 Laravel Mix 生成的生产中包含缩小的 javascript 文件?
【发布时间】:2019-09-17 11:31:34
【问题描述】:

我正在使用laravel-mix,这是我的webpack.mix.js

const mix = require('laravel-mix');

mix.version();
mix.js('resources/js/app.js', 'public/js').extract();

if (mix.inProduction()) {
    mix.minify('public/js/vendor.js');
}

在生产中我想使用vendor.js 的缩小版。

在我的刀片模板中:

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

在开发中,它按预期工作。但在生产中laravel-mix 不包括我的缩小版本。仅当我明确指定时才加载缩小版本:

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

如何在不更改模板的情况下包含正确版本的文件?

【问题讨论】:

  • 使用称为if 的简单构造。在这种情况下,这是一个使用三元运算符的示例:&lt;script src="{{ mix(env('APP_ENV') === 'production' ? 'js/vendor.min.js' : js/vendor.js'') }}"&gt;&lt;/script&gt;
  • @Mjh 这样做正常吗?我想,这个问题可以通过一些参数来解决。

标签: javascript laravel laravel-mix


【解决方案1】:

Laravel Mix automatically minifies .js 正在生产中的文件。

这意味着您的vendor.js 已经在生产环境中缩小,因此无需生成单独的vendor.min.js

【讨论】:

  • 好的,我需要在 prod 和 on dev - 它是不同的字符串。在 cmets Mjh 建议每次检查 APP_ENV 以避免这种情况。不太舒服。
  • vendor.jsvendor.min.js 的内容在生产环境中是相等的(并且都被缩小了)。所以你真的不需要创建一个单独的.min.js 文件。但如果你真的想要,那么你必须按照@Mjh 的建议在你的视图中检查它。
  • 啊啊啊,我终于明白了。缩小的内容包含在没有前缀 min.js 和通用前缀 .js 的文件中。这让我感到困惑。所以在“min.js”中真的不需要,总是“mix('js/vendor.js')”。太好了,非常感谢。
  • @Log,是的,Laravel 成功打破了另一个约定,即在缩小的资产文件名中添加 .min 后缀。
  • 那么在这种情况下你如何处理 git 呢?他们会在 dev 和 prod 之间发生冲突,不是吗?
猜你喜欢
  • 2023-01-02
  • 1970-01-01
  • 2020-06-22
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
  • 1970-01-01
  • 2018-08-26
  • 2020-01-19
相关资源
最近更新 更多