Mat*_*lis 7 assert typescript webpack
我正在使用 TypeScript 3.9 和 webpack 4.46。
断言 2.0.0 是这样导入的:
import { strict as assert } from 'assert';
Run Code Online (Sandbox Code Playgroud)
我只使用该assert
功能,例如:
assert(i < j);
Run Code Online (Sandbox Code Playgroud)
我想删除生产版本中的断言。进一步来说:
assert
,而不是以某种方式禁用断言函数。这是因为我希望能够在任何地方添加断言,但知道它们不会影响最终构建的性能。我认为这是主流要求,而且应该很容易。但我找不到解决办法。
我尝试了webpack-unassert-loader,但记录的用法不起作用:
{
module: {
loaders: [
{ test: /\.js$/, loader: "webpack-unassert-loader" }
]
}
}
Run Code Online (Sandbox Code Playgroud)
Webpack 似乎不喜欢loaders
. 我猜使用文档是针对早期的 webpack 的?
我尝试猜测一种不同的配置方式(请参阅下面的 webpack.config.js),但这不起作用(构建的代码中仍然包含断言)。也许我的猜测是错误的(我不是 webpack 专家)。
我查看了typescript-plugin-unassert,但有两件事让我感到不安:
该插件消除了官方页面上介绍的所有断言和断言IsDefined调用。
那么所有其他断言函数呢?哪个“官方页面”?
也许它工作得很好,并且正是我正在寻找的,但我并没有受到鼓励。
我查看了assert-plus,但/sf/answers/4258321791/中的一条评论让我感到沮丧:
当您通过环境变量停用断言时,该函数不会被删除,而只是函数的内容返回 void。
如果这是正确的,那么它不能满足我的需要。
我非常感谢任何能够告诉我删除断言的标准、常用路径是什么的人。
这是我的胆量webpack.config.js
:
{
module: {
rules: [
{
test: /\.ts$/,
use: ['ts-loader'],
exclude: /node_modules/
},
/* I tried this, but it didn't get rid of the assertions:
{
test: /\.js$/,
use: ["webpack-unassert-loader"]
},
*/
]
},
resolve: {
extensions: [ '.ts', '.tsx', ".js", ".json", ".css"]
},
optimization: {
minimize: getMinimize(env),
minimizer: [new TerserPlugin({
terserOptions: {
compress: {
pure_funcs: [
'console.log',
'console.info',
// I tried this, just as a guess! But it didn't get
// rid of the assertions:
'assert',
]
},
}
})],
},
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
636 次 |
最近记录: |