首页 > 解决方案 > Laravel Mix Sourcemaps 不为生产构建生成

问题描述

我的 Laravel Mix 脚本有以下 webpack.mix.js 设置:

let mix = require('laravel-mix');
let LiveReloadPlugin = require('webpack-livereload-plugin');

mix.webpackConfig({
    plugins: [
        new LiveReloadPlugin({
            port: '35729',
        })
    ],
});

if (mix.inProduction()) {
    mix.disableNotifications();
}

mix
    .options({
        postCss: [
            require('autoprefixer'),
        ],
        processCssUrls: false,
    })
    .setPublicPath('./static')
    .sass('./resources/sass/app.scss', 'css')
    .sourceMaps(true, 'source-map')
    .version();


mix
    .options({
        postCss: [
            require('autoprefixer'),
        ],
        processCssUrls: false,
    })
    .setPublicPath('./static')
    .sass('./resources/sass/login.scss', 'css')
    .sourceMaps(true, 'source-map')
    .version();

当我运行时,npm run development我得到以下输出(包括 Sourcemaps)

DONE  Compiled successfully in 5987ms                                                                                                                                                                              12:35:24

            Asset      Size  Chunks                   Chunk Names
      css/app.css   343 KiB     mix  [emitted]        mix
  css/app.css.map   400 KiB     mix  [emitted] [dev]  mix
    css/login.css   163 KiB     mix  [emitted]        mix
css/login.css.map   236 KiB     mix  [emitted] [dev]  mix
       mix.js.map  3.73 KiB     mix  [emitted] [dev]  mix

但是,如果我运行,npm run production我会得到以下输出(没有 Sourcemaps)

 DONE  Compiled successfully in 9029ms                                                                                                                                                                              12:33:57

        Asset      Size  Chunks                          Chunk Names
  css/app.css   278 KiB       0  [emitted]        [big]  mix
css/login.css   129 KiB       0  [emitted]               mix
   mix.js.map  4.52 KiB       0  [emitted] [dev]         mix

我正在使用 Laravel Mix 5.0.1,并且无法通过其他错误问题/SO 问题找到解决方案——它们似乎都与无法进行开发和修复它的源地图devtools: 'inline-source-map'有关,这与此处无关。

正如 webpack 文档所建议的那样(https://webpack.js.org/configuration/devtool/#devtool),我唯一能想到的是缩小导致问题:

如果默认的 webpack 最小化器已被覆盖(例如自定义 terser-webpack-plugin 选项),请确保将其替换为 sourceMap: true 以启用 SourceMap 支持。

不过,我找不到任何有关 Laravel Mix 的文档来支持这一点。

知道如何解决这个问题吗?

标签: webpacksassminifysource-mapslaravel-mix

解决方案


你应该在函数中false设置generateForProduction参数mix.sourceMaps()

mix.sourceMaps() 接受一些参数


推荐阅读