什么时候create-react-app会混淆或缩小代码?

时间:2018-03-06 05:23:26

标签: reactjs create-react-app

我有一个关于webpack的基本问题,并且我可以使用帮助进行反应(围绕代码混淆/ uglification)。

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

在该文件中,似乎所有内容都放入main.JS文件和main.CSS文件等。我使用" firebase deploy" (在我的情况下)。我希望我的代码可以被丑化,并且不会被任何开发人员完全读取。

但是,当我在Chrome中查看我的应用时,它不会显示main.JS或任何其他捆绑文件。它只显示每个单独的文件以及我编写的代码。知道为什么会这样吗?为什么它不显示&g;来源'下的uglified组合main.js文件。 Chrome中的标签?这与源地图有关吗?

5 个答案:

答案 0 :(得分:25)

有一种更好的方法来确保不包括源地图。 在项目根文件夹中创建.env文件,然后添加GENERATE_SOURCEMAP=false。您将获得没有源地图的构建。

答案 1 :(得分:22)

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"
    }
  }

如果省略源代码生成,.map文件将不会生产,并且原始源代码将无法供任何人(包括您)使用。

答案 2 :(得分:1)

只需使用--nomaps参数进行构建:

npm run build --nomaps

答案 3 :(得分:1)

尝试一下:

DO $$
DECLARE 
l_tab_name    TEXT := 'yourtablename';
l_schema_name TEXT := 'public';
rec record;

BEGIN
for rec IN
(
SELECT rel.relname as table_name ,con.conname as constraint_name
       FROM pg_catalog.pg_constraint con
            INNER JOIN pg_catalog.pg_class rel
                       ON rel.oid = con.conrelid
            INNER JOIN pg_catalog.pg_namespace nsp
                       ON nsp.oid = connamespace
       WHERE nsp.nspname     = l_schema_name
             AND rel.relname = l_tab_name
)
  LOOP

       EXECUTE format ('ALTER TABLE %I 
                        DROP CONSTRAINT %I',rec.table_name,rec.constraint_name );

  END LOOP;
END $$;

它为我工作,不再在生产中显示{ … "scripts": { "build": "set GENERATE_SOURCEMAP=false && react-scripts build" } } 文件,但仍显示每个单独的文件以及我们编写的代码以及node_modules文件夹。

也许这是一堆Firebase,因为我们使用的是Firebase的免费版本或其他免费部署服务,例如Now,surge,netlify等?我也不确定。

答案 4 :(得分:1)

这对我有帮助:

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