11const path = require ( "path" ) ;
22const fs = require ( "fs-extra" ) ;
33const { LOCALES } = require ( "@triliumnext/commons" ) ;
4+ const setLanguages = require ( 'electron-packager-languages' ) ;
45
56const ELECTRON_FORGE_DIR = __dirname ;
67
@@ -29,6 +30,10 @@ const macosSignConfiguration = process.env.APPLE_ID ? {
2930 }
3031} : undefined ;
3132
33+ const localesToKeep = LOCALES
34+ . filter ( locale => ! locale . contentOnly )
35+ . map ( locale => locale . electronLocale ) ;
36+
3237module . exports = {
3338 outDir : "out" ,
3439 // Documentation of `packagerConfig` options: https://electron.github.io/packager/main/interfaces/Options.html
@@ -45,6 +50,9 @@ module.exports = {
4550 ...( process . platform === "darwin" ? [ ] : extraResourcesForPlatform )
4651 ] ,
4752 prune : false ,
53+ afterCopy : [
54+ setLanguages ( localesToKeep )
55+ ] ,
4856 afterComplete : [
4957 ( buildPath , _electronVersion , platform , _arch , callback ) => {
5058 // Only move resources on non-macOS platforms
@@ -142,53 +150,6 @@ module.exports = {
142150 }
143151 ] ,
144152 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- } ,
192153 // Gather all the artifacts produced by the makers and copy them to a common upload directory.
193154 postMake ( _ , makeResults ) {
194155 const outputDir = path . join ( __dirname , ".." , "upload" ) ;
0 commit comments