问题标签 [terser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1040 浏览

javascript - Terser CLI:如何删除评论?

我正在使用这个命令:

但是,评论全部保留。其他一切都被压缩了。如何删除评论?

编辑:这似乎将所有评论替换为//

0 投票
1 回答
878 浏览

ruby-on-rails - Rails、Webpacker、Terser keep_fnames

试图避免 webpacker:compile 删除函数名。尝试过 Terser 甚至 babel-plugin-minify-mangle-names。到现在都没去。

为详细的长解释道歉。

我的设置:带有 gem 'webpacker'、'~> 4.0.7' 的 Rails 5.2

包.json

我将 'minify-mangle-names' 添加到babel.config.js,否则与此处的基本示例相同

我的 webpack/production.js 文件如下:

如您所见,我在底部添加了一个控制台输出,以测试是否应用了我为 Terser 设置的优化选项。当我运行NODE_ENV=production ./bin/webpack-dev-server(在生产环境中模拟 webpack 服务器)时,它会打印:

正如您在顶部看到的控制台输出keep_fnames设置为truefor Terser。我收到一堆警告,但它模拟它编译。

因为我是用 webpack-dev-server 运行这个的,所以没有编译好的文件,所以接下来,我运行rake assets:precompile来模拟真实的现场部署。正如预期的那样,它打印:

太好了,所以它甚至编译了文件。

但是当我查看 public/packs/js 时,我看到了编译的文件。 .map 文件不存在,尽管我在运行时传递sourceMap: trueTerser它并且没有收到任何警告/错误NODE_ENV=production ./bin/webpack-dev-server。其中一个文件是grapesjs-mjml-795c3e00423f5e30c625.js当我打开它时,我看到一个没有函数名的缩小文件:

这几乎就像我做rake assets:precompile 时一样,我的设置被忽略了。

我已经尝试了很多东西。到目前为止,没有任何效果。有任何想法吗?

更新 通过将以下块添加到我的module.exports = merge({.map 文件现在存在。尽管如此,函数名称还是没有运气。输出:{ libraryExport:'default',libraryTarget:'umd',},

0 投票
1 回答
1994 浏览

javascript - 汇总,多个文件,多个文件中的相同常量名称:浏览器中的错误:未捕获的语法错误:标识符“o”已被声明

我有个问题。

解释

在我在 /one 页面上导航的网站中,one.js文件中的代码执行良好。

过了一会儿,我在两个.js 文件中插入页面( pjax,ajax:无论如何)第二个代码。

浏览器抱怨此错误:

复制和源代码

  1. rollup.config.js

    /li>
  2. src/one.js

    /li>
  3. src/two.js

    /li>
  4. dist/js/one.js

    /li>
  5. dist/js/two.js

    /li>

问题

如何解决这个问题?

我们可以根据文件名“前缀”常量名吗?

当然,如果我将所有内容都放在一个.js文件中,它可以工作,但由于项目的结构,这是不可能的。

0 投票
0 回答
683 浏览

webpack - Webpack 4 中的自定义 terser-webpack-plugin 缓存失效

我正在将一个大型应用程序从 Webpack v3 升级到 v4。

在 Webpack 3 中,我们为 UglifyJS 提供了一个自定义的后 Webpack 机制。它将经过后处理的 JS 文件存储在给定目录中 24 小时,其文件名是根据其内容生成的哈希值。

现在,我们已经用内置的 TerserJS 插件替换了我们的 post-Webpack Uglify 步骤。我想复制上述缓存功能。

我试过阅读文档,但他们在这个主题上很少见:https ://webpack.js.org/plugins/terser-webpack-plugin/#cache

文档没有提到文件将被缓存多长时间,或者它们将如何失效。

如果有人能指出我正确的方向,那将不胜感激。

0 投票
2 回答
2061 浏览

node.js - React JS 运行脚本构建无法编译

问题描述

>> npm run-script build编译失败

预期行为

编译成功,build文件夹包含一个缩小的项目,输出没有错误

实际行为

输出给出以下错误:

也失败的可能修复

Stackoverflow 社区对此有一些解决方案。第一个是npm i react-scripts --save-dev,这并没有什么不同。其次npm i terser@3.14.1 --save,也没有进展。

包.json

附加信息

使用创建的项目npx create-react-app。/ Windows 10 1903, / VSCode / ReactJS 库 / Firebase 托管/firestore 已初始化 /

我正在使用 npm,但我不知道基于纱线的可能修复是否可以做任何事情。即使我尝试过,到目前为止也没有任何效果。

**编辑:还尝试完全删除 terser 并安装两个 Terser@3.14.1,然后删除它并安装 Terser@3.16.1 以测试任何版本是否有效。版本之间没有区别。还尝试将 terser 作为依赖项安装,包括 3.14.1 和 3.16.1。没有任何效果。

仅此项目无法进行构建。较旧的项目已成功构建。目前正在尝试找出可能导致它的原因。

0 投票
1 回答
111 浏览

typescript - Webpack,babel - node_modules 不排除在捆绑包中

我试图弄清楚我的 babel webpack 配置有什么问题。构建后,我的包中有 node_modules

我尝试了 .babel-rc、terser 和 awesome-typescript-loader(不包括 /node_modules/)的不同配置,但 node_modules 仍然在包中。

"webpack": "^4.41.0",

yarn run clean-dist && webpack -p --config=webpack/prod.js --env.production

.babelrc

.tsconfig

https://i.imgur.com/orcJqAT.png

我希望捆绑包没有 node_modules

0 投票
1 回答
3905 浏览

vue.js - Vue CLI 3 使用 Terser 删除 console.log 和代码注释

我正在使用 VUE CLI 3,我需要从构建的产品中删除console.log代码注释。这是我的Terser设置:

src文件夹中的webpack.config.js

我的生产工作流程:运行npm run build-> cd dist->npm run serve

生产版本仍会输出所有console.log语句并显示代码注释(<!-- -->)。我需要更改哪些内容才能删除它们?

0 投票
1 回答
7776 浏览

javascript - Vue CLI 3 vue.config.js 与 webpack.config.js 的插件

我正在使用 Vue CLI 3,我需要添加Terser Webpack 插件以从代码中删除console.log注释。这不适用于我当前的设置 - 日志和评论仍在构建中。我的制作流程:

  1. npm run build
  2. serve -s dist

vue.config.js:

webpack.config.js:

包.json

我需要更改什么才能使其正常工作?代码的正确webpack.config.js位置?

0 投票
1 回答
51 浏览

javascript - Javascript中的缩小安全捕获参数?

使用 webpack 的 Terser 插件缩小我的 JavaScript 应用程序后,此 catch 函数无法在浏览器中正确运行

在此示例中,后端发送一个错误对象,其中包含设置为“用户存在”的错误属性。

浏览器应该能够解析错误对象并读取error.error,但它不能。

使用未缩小的代码,脚本可以正常工作,并且浏览器会执行“vm.emailTakenError = true”行。

在浏览器控制台命令行中,缩小后,返回 error.error 给出此错误(Chrome 开发工具):

未捕获的 ReferenceError:错误未在 eval 处定义(eval at (signup.ts:92), :1:1)

奇怪的是,在 Chrome 开发工具中使用缩小代码上的源映射,控制台可以使用鼠标悬停解析 error.error 属性,但不能作为 Watch 或浏览器窗口或任何其他方法。

同样神秘的是,这条线永远不会运行:

该代码在 Firefox 中也失败了。

我对缩小器、代码或其他东西有问题吗?如何解决这个问题?

0 投票
1 回答
994 浏览

minify - 使用 Terser,函数名称和变量没有被破坏,死代码没有被删除

使用 Terser 我无法得到想要的结果。

我正在尝试缩小下面的测试代码,并且无论我尝试什么,函数名称都不会被缩小。变量名称也保持不变,只是在具有参数的局部函数中,它们会被更改。我已经着手topleveltrue尝试了我能想到的每一个选项。中的死代码neverBeCalled也不会消失。使用 Terser v4.3.4 并且使用另一个缩小器没有问题,如果可以的话。

我的配置:

测试源文件:

结果