create-react-app 何时混淆或缩小代码?

IT技术 reactjs create-react-app
2021-04-06 15:55:26

我有一个关于 webpack 的基本问题,我可以使用帮助做出react(围绕代码混淆/丑化)。

我正在create-react-app为我的应用程序使用它,它似乎为生产创建了一个捆绑构建(运行后yarn build)。

在该文件中,似乎所有内容都放入了 main.JS 文件和 main.CSS 文件等中。我使用“firebase deploy”(在我的情况下)进行实时推送。我希望我的代码变得丑陋,并且不能被任何开发人员完全阅读。

但是当我在 Chrome 中查看我的应用程序时,它不会显示 main.JS 或任何其他捆绑文件。它只显示每个单独的文件以及我编写的代码。知道这是为什么吗?为什么它不在 chrome 的“源”选项卡下显示丑陋的组合 main.js 文件?这与源地图有关吗?

5个回答

有一种更好的方法可以确保不包含源映射。在项目根文件夹中创建 .env 文件并添加GENERATE_SOURCEMAP=false. 您将在没有源映射的情况下构建。

React 在构建期间缩小代码并生成源映射。JS 最终被混淆为缩小的副产品,而不是因为保密。这样,最终用户能够比未压缩脚本更快地加载脚本,并且当您(或他们)打开开发人员工具时,您(和其他所有人)可以浏览原始代码。

如果您build/static/js在构建后查看目录,则有成对的.js.map文件。JS 文件与您的网站一起加载,并且.map在打开开发人员工具时按需加载文件。

要禁用源映射生成,请在GENERATE_SOURCEMAP环境变量设置为 的情况下运行构建false

GENERATE_SOURCEMAP=false npm run build

或者

GENERATE_SOURCEMAP=false yarn build

或使其成为build脚本的一部分package.json

  {
    …
    "scripts": {
      …
-     "build": "react-scripts build"
+     "build": "GENERATE_SOURCEMAP=false react-scripts build"
    }
  }

如果您省略 sourcemap 生成,.map文件将不会最终投入生产,并且您的原始源代码将不会对任何人(包括您)可用。

@aabbccsmith 实际上我只是将它添加到 .env 文件中并且像魅力一样工作
2021-05-24 15:55:26
@Roshdy 如果您使用的是 Windows,则语法为set GENERATE_SOURCEMAP=false && react-scripts build:D
2021-06-08 15:55:26
它给我“GENERATE_SOURCEMAP”不被识别为内部或外部命令!添加到 时package.json,但在.env文件中工作正常
2021-06-17 15:55:26

只需使用--nomaps参数构建它

npm run build --nomaps

试试这个:

{
  …
  "scripts": {
    "build": "set GENERATE_SOURCEMAP=false && react-scripts build"
  }
}

它对我.map有用,并且不再在生产中显示该文件,但它仍然显示每个单独的文件和我们编写的代码,以及 node_modules 文件夹。

也许这是一个 firebase 的事情,因为我们正在使用 firebase 的免费版本或其他免费部署服务,如 Now、surge、netlify 或其他什么?我也不确定。

#solved 我只是手动删除.map了构建文件夹中的所有文件,然后将它们部署到服务器。现在,我有意隐藏的代码从 devtools 的源选项卡中消失了,我的网络仍然可以正常工作。好的。
2021-05-22 15:55:26
删除 .map 文件对我也有帮助,猜测添加到构建部署将是确保不构建 .map 文件的下一步。
2021-06-10 15:55:26

这对我有帮助:

"scripts": {
    "build": "set \"GENERATE_SOURCEMAP=false\" && react-scripts build",   
  },