1
1
const path = require ( "path" ) ;
2
2
const fs = require ( "fs-extra" ) ;
3
3
const { LOCALES } = require ( "@triliumnext/commons" ) ;
4
+ const setLanguages = require ( 'electron-packager-languages' ) ;
4
5
5
6
const ELECTRON_FORGE_DIR = __dirname ;
6
7
@@ -29,6 +30,10 @@ const macosSignConfiguration = process.env.APPLE_ID ? {
29
30
}
30
31
} : undefined ;
31
32
33
+ const localesToKeep = LOCALES
34
+ . filter ( locale => ! locale . contentOnly )
35
+ . map ( locale => locale . electronLocale ) ;
36
+
32
37
module . exports = {
33
38
outDir : "out" ,
34
39
// Documentation of `packagerConfig` options: https://electron.github.io/packager/main/interfaces/Options.html
@@ -45,6 +50,9 @@ module.exports = {
45
50
...( process . platform === "darwin" ? [ ] : extraResourcesForPlatform )
46
51
] ,
47
52
prune : false ,
53
+ afterCopy : [
54
+ setLanguages ( localesToKeep )
55
+ ] ,
48
56
afterComplete : [
49
57
( buildPath , _electronVersion , platform , _arch , callback ) => {
50
58
// Only move resources on non-macOS platforms
@@ -142,53 +150,6 @@ module.exports = {
142
150
}
143
151
] ,
144
152
hooks : {
145
- // Remove unused locales from the packaged app to save some space.
146
- postPackage ( _ , packageResult ) {
147
- const localesToKeep = LOCALES
148
- . filter ( locale => ! locale . contentOnly )
149
- . map ( locale => locale . electronLocale . replace ( "_" , "-" ) ) ;
150
- const keptLocales = new Set ( ) ;
151
- const removedLocales = [ ] ;
152
-
153
- for ( const outputPath of packageResult . outputPaths ) {
154
- const localesDir = path . join ( outputPath , 'locales' ) ;
155
-
156
- if ( ! fs . existsSync ( localesDir ) ) {
157
- console . log ( 'No locales directory found. Skipping cleanup.' ) ;
158
- return ;
159
- }
160
-
161
- const files = fs . readdirSync ( localesDir ) ;
162
-
163
- for ( const file of files ) {
164
- let localeName = path . basename ( file , ".pak" ) ;
165
- if ( localeName === "en-US" && process . platform === "win32" ) {
166
- // If the locale is "en-US" on Windows, we treat it as "en".
167
- // This is because the Windows version of Electron uses "en-US.pak" instead of "en.pak".
168
- localeName = "en" ;
169
- }
170
-
171
- if ( localesToKeep . includes ( localeName ) ) {
172
- keptLocales . add ( localeName ) ;
173
- continue ;
174
- }
175
-
176
- const filePath = path . join ( localesDir , file ) ;
177
- fs . unlinkSync ( filePath ) ;
178
- removedLocales . push ( file ) ;
179
- }
180
- }
181
-
182
- console . log ( `Removed unused locale files: ${ removedLocales . join ( ", " ) } ` ) ;
183
-
184
- // Ensure all locales that should be kept are actually present.
185
- for ( const locale of localesToKeep ) {
186
- if ( ! keptLocales . has ( locale ) ) {
187
- console . error ( `Locale ${ locale } was not found in the packaged app.` ) ;
188
- process . exit ( 1 ) ;
189
- }
190
- }
191
- } ,
192
153
// Gather all the artifacts produced by the makers and copy them to a common upload directory.
193
154
postMake ( _ , makeResults ) {
194
155
const outputDir = path . join ( __dirname , ".." , "upload" ) ;
0 commit comments