如何在Gatsby v2中关闭生产环境下的源代码映射?

9

我正在努力学习如何在生产环境下禁用源代码映射,因为默认的Webpack设置是不包含devtool选项的,但是Gatsby v2启用了它。我已经尝试根据旧版本和新文档来解决问题,但是并没有成功:

// gatsby-node.js
exports.onCreateWebpackConfig = ({ actions, stage }) => {
  if (stage === 'build-javascript') {
    // turn off source-maps
    actions.setWebpackConfig({
      devtool: false
    })
  }
};

我刚刚找到了一个聪明的解决方法 - 您可以修改您的 package.json 文件,并在构建命令中添加 "&& rm build/**/*.map"。 - Sia
1
看起来我的问题中的解决方案确实有效。要么Finder没有刷新文件列表,要么构建没有删除旧的sourcemap文件。 - Sia
1
它应该可以工作 - 我使用相同的代码,但没有条件。 - Artem Sapegin
哦,嘿 @ArtemSapegin! :) 是的。显然每次构建时公共文件夹都不会被删除,因此我之前创建的源映射仍然存在其中。 - Sia
2个回答

6

问题中的代码是正确的解决方案。问题在于Gatsby每次构建时不会删除/public/文件夹,因此之前创建的源映射仍然存在。因此,首先删除该文件夹,然后运行构建步骤。


5
以上解决方案可行。还有一种选项是使用Gatsby插件gatsby-plugin-no-sourcemaps
首先安装该插件。
npm i gatsby-plugin-no-sourcemaps

接下来,转到您项目的根目录中的gatsby-config.js

在插件数组中添加以下内容:

gatsby-plugin-no-sourcemaps

转到 public 文件夹,删除所有文件。再次运行构建命令gatsby build。现在构建将没有 .map 文件。

gatsby-config.js 将如下所示:

enter image description here


1
但它也会在开发中删除地图文件。有没有办法仅在构建时排除地图文件,而不是在本地开发时? - ntn
@Nitin 查看了它的源代码,发现它使用的是 if (stage === 'build-javascript'),这仅发生在构建阶段 (gatsby build)。 - Ninh Pham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接