问题描述
我看到这是因为节点模块和应用程序打包了一些不需要的东西来运行.当前文件大小为 600 mb,但我希望它小于 200 mb.
I see this is because of node-modules and application is packaged with some unwanted stuffs for running. Current file size is 600 mb but I want it to be less than 200 mb.
我怀疑 --no-prune 填充了构建的包中的所有节点模块,但我只需要在构建的包中指定节点模块
I suspect --no-prune populates all the node-modules in package that is built, but I need only specifies node-modules in the package that is built
我尝试删除 package.json 中不需要的包,它也对我没有帮助
I tried removing unwanted packages in package.json, it doesn't help me either
重构后
"bundledDependencies": [
"fs",
"os",
"path",
"regedit",
"request",
"start",
"xml2js",
"util",
"replace",
"process",
"fs",
"console"
],
**before refactoring**
"bundledDependencies": [
"archiver",
"child_process",
"fs",
"node-wget",
"os",
"path",
"ping",
"regedit",
"request",
"start",
"xml2js",
"util",
"replace",
"process",
"fs",
"console",
"electron",
"electron-builder",
"electron-packager"
],
这对我也没有帮助
package.json
{
"productName": "xyz",
"description": "something",
"version": "1.0.1",
"main": "main.js",
"scripts": {
"start": "electron .",
"builderForWindows": "electron-packager --out winx64 --overwrite --platform win32 --appname clientsettings . --executable-name abc --no-prune",
"builderForLinux": "electron-packager --out Linx64 --overwrite --platform linux --appname clientsettings . --executable-name abc --no-prune"
},
"author": "xyz",
"devDependencies": {
"archiver": "^2.1.1",
"asar": "^2.0.1",
"child_process": "^1.0.2",
"console": "^0.7.2",
"electron": "^4.0.4",
"electron-builder": "^20.41.0",
"electron-packager": "^13.1.1",
"fs": "0.0.1-security",
"node-wget": "^0.4.2",
"os": "^0.1.1",
"path": "^0.12.7",
"ping": "^0.2.2",
"regedit": "^3.0.2",
"replace": "^1.1.0",
"replace-in-file": "^4.1.0",
"request": "^2.85.0",
"start": "^5.1.0",
"xml2js": "^0.4.19"
},
"bundledDependencies": [
"archiver",
"child_process",
"fs",
"node-wget",
"os",
"path",
"ping",
"regedit",
"request",
"start",
"xml2js",
"util",
"replace",
"process",
"fs",
"console",
"electron",
"electron-builder",
"electron-packager"
],
"dependencies": {
"appdata-path": "^1.0.0",
"targets": "^1.11.0"
}
}
推荐答案
App Bundle 有一些不必要的节点模块(例如:electron-packager、electron-builder),我为什么需要它们捆绑后如何去掉?
App Bundle has some unnecessary node modules(ex:electron-packager,electron-builder),why do I need them after its bundled, how to get rid of them?
bundledDependencies"中列出的所有内容都将包含在应用程序包中.
Everything listed in "bundledDependencies" will be included in the app bundle.
"bundledDependencies": [
"archiver",
"child_process",
"fs",
"node-wget",
"os",
"path",
"ping",
"regedit",
"request",
"start",
"xml2js",
"util",
"replace",
"process",
"fs",
"console",
"electron",
"electron-builder",
"electron-packager"
],
<小时>
"builderForWindows": "electron-packager --out winx64 --overwrite --platform
win32 --appname clientsettings . --executable-name abc --no-prune",
指定不修剪" - 请参阅此答案:https://stackoverflow.com/a/44156640/840992
Specifying "no prune" – see this answer: https://stackoverflow.com/a/44156640/840992
注意不要在最终应用中包含您不想要的 node_modules.如果你把它们放在 devDependencies 部分package.json,默认情况下没有与这些相关的模块依赖项将被复制到应用程序包中.(这种行为可以使用 --no-prune 标志关闭.)
Be careful not to include node_modules you don't want into your final app. If you put them in the devDependencies section of package.json, by default none of the modules related to those dependencies will be copied in the app bundles. (This behavior can be turned off with the --no-prune flag.)
来自有关 --prune 标志的 electron-packager API 页面
From electron-packager API page about --prune flag
运行包管理器命令以删除 package.json 的 devDependencies 部分中指定的所有包输出 Electron 应用程序.
Runs the package manager command to remove all of the packages specified in the devDependencies section of package.json from the outputted Electron app.
这篇关于如何减小超过 600 mb 的 Electron 封装尺寸的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!