问题
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.
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
I tried removing unwanted packages in package.json, it doesn't help me either
after refactoring
"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"
],
this didn't help me either
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"
}
}
回答1:
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?
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",
Specifying "no prune" – see this answer: https://stackoverflow.com/a/44156640/840992
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.)
From electron-packager API page about --prune flag
Runs the package manager command to remove all of the packages specified in the devDependencies section of package.json from the outputted Electron app.
来源:https://stackoverflow.com/questions/56907635/how-to-reduce-electron-package-size-that-exceeds-more-than-600-mb