javascript - 导入“sjcl”时 Webpack 4 不需要的库。
问题描述
我创建了一个没有任何配置的简单 webpack 4 演示项目。我添加了一个简单的 index.js,它只打印出一个简单的行并且一切正常。一个 900 字节的 main.js 按预期生成。
但是,当我需要 24kb 库“sjcl”(具有 0 个依赖项)然后执行构建时,会生成一个 400kb 的文件。我已经使用分析仪对发生了什么有任何想法?
就像 webpack 正在导入大量依赖项来处理这个库。我怎样才能减轻这种情况?
index.js
require("sjcl");
console.log("hello world");
包.json
{
"name": "js-demo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "webpack"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"sjcl": "1.0.7"
},
"devDependencies": {
"webpack": "4.16.5",
"webpack-cli": "3.1.0"
}
}
资产大小限制警告:以下资产超出建议的大小限制 (244 KiB)。这会影响 Web 性能。资产:main.js (323 KiB)
下面是我的分析器: https ://pastebin.com/iguWmmaS
解决方案
看起来 webpack 将节点加密模块的浏览器兼容版本添加到包中,从而显着增加了大小。为了防止 Webpack 这样做,您可以使用下面的选项让 webpack 忽略该库。
module: {
noParse: [
/sjcl\.js$/,
]
}
推荐阅读
- html - 内联 Vimeo 按钮覆盖
- vba - 当数据为数千时,我的对帐 VBA 宏运行时间过长
- python - Pandas 填充列中的某些值
- ios - UITableView + UICollectionView + UITableView 大小问题
- azure-devops - Azure DevOps 卡没有 Github 注释或测试
- javascript - React Redux:在调度之前调用使用 Selector
- amazon-web-services - 从 Appsync 连接到 ElasticSearch/OpenSearch 数据源时出现“Elasticsearch 响应错误:禁止”
- javascript - 提示不从客户端获取用户输入
- pgadmin-4 - 如何为 PostgreSQL 14 设置 PostgreSQL 二进制路径
- amazon-s3 - s3cmd mb 失败,访问 ID 错误,而 s3cmd rb 成功