我有一个关于webpack的基本问题,并且我可以使用帮助进行反应(围绕代码混淆/ uglification)。
我正在为我的应用程序使用create-react-app
,它似乎创建了一个用于生产的捆绑构建(在运行yarn build
之后)。
在该文件中,似乎所有内容都放入main.JS文件和main.CSS文件等。我使用" firebase deploy" (在我的情况下)。我希望我的代码可以被丑化,并且不会被任何开发人员完全读取。
但是,当我在Chrome中查看我的应用时,它不会显示main.JS或任何其他捆绑文件。它只显示每个单独的文件以及我编写的代码。知道为什么会这样吗?为什么它不显示&g;来源'下的uglified组合main.js文件。 Chrome中的标签?这与源地图有关吗?
答案 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",
},