Preflight Checklist
Issue Details
- Electron Forge Version:
- Electron Version:
- Operating System:
- Last Known Working Electron Forge version::
- n/a - the stable release v5.2.4 has no builtin support for webpack
- Webpack Version:
- monaco-editor Version:
- monaco-editor-webpack-plugin Version:
Expected Behavior
Adding monaco-editor to my app created with electron-forge works fully in both development and deployment modes: code is syntax highlighted, and there are no errors in the dev console.
Actual Behavior
Adding monaco-editor to my app created with electron-forge works fully only in development mode. The app created by electron-forge make loads and runs, but it throws 404 errors when loading some JavaScript files, which break monaco-editor's web workers, causing the editor's syntax highlighting to fail. However the rest of the app functions for the most part: the code I added to renderer.js does run, and even monaco-editor does load and does work - just not fully, due to the missing JS files.
The source of the trouble seems to be a mismatch between where monaco-editor's web-worker JS files exist on disk and what URL is used to attempt to load them. For example one desired file is at /Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/2/index.js but the browser tries to request file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/2/index.js, which fails. (note the absence then presence of …/main_window/… subdirectory, respectively)
Note: I'm creating an issue here in electron-forge (rather than in monaco-editor or monaco-editor-webpack-plugin) because of the different results observed in npm start vs npm run make. The underlying error may well be in one of the other two repos (e.g. it's possible that monaco-editor-webpack-plugin is at fault for ignoring options that @electron-forge/plugin-webpack sets to support different entry points for different windows). That said, it felt appropriate to start here because it's ultimately differences in electron-forge's development vs deploy that is cascading into these user-visible differences, which seems to be counter to electron-forge's intent.
To Reproduce
git clone https://github.com/sartak/electron-forge-issue-1675, which I'd created with:
-
npx create-electron-app my-proj --template=webpack (commit 1)
-
npm install monaco-editor-webpack-plugin monaco-editor file-loader (commit 2)
-
- adding monaco to webpack config and renderer.js (commit 3)
cd electron-forge-issue-1675
npm start
- Observe that the editor works correctly, especially syntax highlighting, and there are no errors in the dev console
npm run make
open out/my-proj-darwin-x64/my-proj.app/
- Observe that the editor is not syntax highlighting, and there are 404 errors for local JS files in the dev console, and other cascading errors
Annotated app dev console output
index.js:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
This first error is from trying to load file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/2/index.js
Here's the relevant directory structure:
.../.webpack/renderer/main_window/index.js <- exists
.../.webpack/renderer/main_window/index.html <- exists
.../.webpack/renderer/main_window/2/ <- does NOT exist
.../.webpack/renderer/main_window/2/index.js <- does NOT exist
.../.webpack/renderer/2/ <- DOES exist
.../.webpack/renderer/2/index.js <- DOES exist
main_window/index.html is the "Welcome to your Electron application" template from the electron-forge scaffolding. main_window/index.js is a 14-megabyte file that contains a minified version of the renderer JS (including my modifications to create and attach a div into the DOM, then load monaco), as well as, at the very least, a lot of monaco's own source code. It (correctly) does not appear to include the main.js (which is correctly available in .../.webpack/main/index.js)
The file that the system is trying to load is .../.webpack/renderer/2/index.js (without the /main_window/ subdirectory), which is the code-split module for the JavaScript syntax highlighting web worker. If I sinfully copy the file into the place that it's expected to be:
cd out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/
mkdir renderer/main_window/2
cp renderer/2/index.js renderer/main_window/2/
Then open out/my-proj-darwin-x64/my-proj.app/, this error goes away and syntax highlighting does work.
index.js:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
This second error is from trying to load file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/64/index.js
It's equivalent to the previous error, except with s/2/64/. It's another code-split module for a language-specific web worker.
(Copying this chunk into the expected place helps monaco get further along, but then it fails in the same way looking for additional files, so I stopped here)
And then finally a few cascading errors resulting from the above two:
simpleWorker.js:31 Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/Microsoft/monaco-editor#faq
bootstrap:105 Uncaught (in promise) ChunkLoadError: Loading chunk 2 failed.
(error: file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/2/index.js)
at Function.o.e (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:709)
at Object.loader (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:1738938)
at e.load (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:149970)
at file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:150327
at file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2494524
at e.fire (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:63391)
at e._getOrCreateMode (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2407375)
at e._createModeAndGetLanguageIdentifier (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2407055)
at t._selector (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2406669)
at new t (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2405365)
bootstrap:105 Uncaught (in promise) ChunkLoadError: Loading chunk 64 failed.
(error: file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/64/index.js)
at Function.o.e (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:709)
at f (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2045903)
at file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2046325
at file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2494524
at e.fire (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:63391)
at e._getOrCreateMode (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2407375)
at e._createModeAndGetLanguageIdentifier (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2407055)
at t._selector (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2406669)
at new t (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2405365)
at e.create (file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/index.js:1:2406591)
electron-forge make debug log
$ DEBUG="electron-forge:*" ./node_modules/.bin/electron-forge make
WARNING: DEBUG environment variable detected. Progress indicators will be sent over electron-forge:lifecycle
electron-forge:async-ora Process Started: Checking your system +0ms
electron-forge:check-system checking system, create ~/.skip-forge-system-check to stop doing this +0ms
electron-forge:async-ora Process Succeeded: Checking your system -- after 238ms +238ms
WARNING: DEBUG environment variable detected. Progress indicators will be sent over electron-forge:lifecycle
electron-forge:async-ora Process Started: Resolving Forge Config +0ms
electron-forge:project-resolver searching for project in: /Users/shawn/tmp/my-proj +0ms
electron-forge:project-resolver electron-forge compatible package.json found in /Users/shawn/tmp/my-proj/package.json +1ms
electron-forge:require-search searching [
'@electron-forge/plugin-webpack',
'/Users/shawn/tmp/my-proj/@electron-forge/plugin-webpack',
'/Users/shawn/tmp/my-proj/node_modules/@electron-forge/plugin-webpack'
] relative to /Users/shawn/tmp/my-proj +0ms
electron-forge:require-search testing @electron-forge/plugin-webpack +1ms
electron-forge:plugin:webpack hooking process events +0ms
electron-forge:async-ora Process Succeeded: Resolving Forge Config -- after 425ms +427ms
electron-forge:require-search searching [
'@electron-forge/maker-squirrel',
'/Users/shawn/tmp/my-proj/@electron-forge/maker-squirrel',
'/Users/shawn/tmp/my-proj/node_modules/@electron-forge/maker-squirrel'
] relative to /Users/shawn/tmp/my-proj +422ms
electron-forge:require-search testing @electron-forge/maker-squirrel +0ms
electron-forge:require-search searching [
'@electron-forge/maker-zip',
'/Users/shawn/tmp/my-proj/@electron-forge/maker-zip',
'/Users/shawn/tmp/my-proj/node_modules/@electron-forge/maker-zip'
] relative to /Users/shawn/tmp/my-proj +45ms
electron-forge:require-search testing @electron-forge/maker-zip +0ms
electron-forge:require-search searching [
'@electron-forge/maker-deb',
'/Users/shawn/tmp/my-proj/@electron-forge/maker-deb',
'/Users/shawn/tmp/my-proj/node_modules/@electron-forge/maker-deb'
] relative to /Users/shawn/tmp/my-proj +1ms
electron-forge:require-search testing @electron-forge/maker-deb +0ms
electron-forge:require-search searching [
'@electron-forge/maker-rpm',
'/Users/shawn/tmp/my-proj/@electron-forge/maker-rpm',
'/Users/shawn/tmp/my-proj/node_modules/@electron-forge/maker-rpm'
] relative to /Users/shawn/tmp/my-proj +1ms
electron-forge:require-search testing @electron-forge/maker-rpm +0ms
We need to package your application before we can make it
electron-forge:async-ora Process Started: Preparing to Package Application for arch: x64 +50ms
electron-forge:project-resolver searching for project in: /Users/shawn/tmp/my-proj +475ms
electron-forge:project-resolver electron-forge compatible package.json found in /Users/shawn/tmp/my-proj/package.json +1ms
electron-forge:require-search searching [
'@electron-forge/plugin-webpack',
'/Users/shawn/tmp/my-proj/@electron-forge/plugin-webpack',
'/Users/shawn/tmp/my-proj/node_modules/@electron-forge/plugin-webpack'
] relative to /Users/shawn/tmp/my-proj +5ms
electron-forge:require-search testing @electron-forge/plugin-webpack +1ms
electron-forge:plugin:webpack hooking process events +57ms
electron-forge:async-ora Process Started: Compiling Main Process Code +26ms
electron-forge:plugin:webpack:webpackconfig Config mode: production +0ms
electron-forge:async-ora Process Succeeded: Compiling Main Process Code -- after 633ms +633ms
electron-forge:async-ora Process Started: Compiling Renderer Template +0ms
electron-forge:async-ora Process Succeeded: Compiling Renderer Template -- after 25s +25s
electron-forge:packager packaging with options {
asar: false,
overwrite: true,
ignore: [Function (anonymous)],
dir: '/Users/shawn/tmp/my-proj',
arch: 'x64',
platform: 'darwin',
afterCopy: [ [AsyncFunction (anonymous)] ],
afterExtract: [ [AsyncFunction (anonymous)] ],
afterPrune: [ [AsyncFunction (anonymous)] ],
out: '/Users/shawn/tmp/my-proj/out',
electronVersion: '8.2.5',
quiet: true
} +0ms
electron-forge:async-ora Process Succeeded: Preparing to Package Application for arch: x64 -- after 27.5s +2s
electron-forge:async-ora Process Started: Preparing native dependencies +8ms
electron-forge:async-ora Process Succeeded: Preparing native dependencies -- after 6ms +6ms
electron-forge:async-ora Process Started: Packaging Application +0ms
electron-forge:async-ora Process Succeeded: Packaging Application -- after 20ms +20ms
Making for the following targets: zip
electron-forge:async-ora Process Started: Making for target: zip - On platf error reproduction
orm: darwin - For arch: x64 +2ms
electron-forge:async-ora Process Succeeded: Making for target: zip - On platform: darwin - For arch: x64 -- after 8.8s +9s
electron-forge:plugin:webpack handling process exit with: { cleanup: true } +36s
electron-forge:plugin:webpack handling process exit with: { cleanup: true } +1ms
Generated app directory layout
$ find . | sort
.
./Contents
./Contents/Frameworks
./Contents/Frameworks/Electron Framework.framework
./Contents/Frameworks/Electron Framework.framework/Electron Framework
./Contents/Frameworks/Electron Framework.framework/Libraries
./Contents/Frameworks/Electron Framework.framework/Resources
./Contents/Frameworks/Electron Framework.framework/Versions
./Contents/Frameworks/Electron Framework.framework/Versions/A
./Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework
./Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries
./Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libEGL.dylib
./Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libGLESv2.dylib
./Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib
./Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libEGL.dylib
./Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libGLESv2.dylib
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/Info.plist
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/MainMenu.nib
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/am.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/am.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ar.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ar.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bg.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bg.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bn.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bn.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ca.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ca.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/chrome_100_percent.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/chrome_200_percent.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/crashpad_handler
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/cs.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/cs.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/da.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/da.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/de.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/de.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/el.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/el.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en_GB.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en_GB.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es_419.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es_419.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/et.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/et.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fa.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fa.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fi.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fi.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fil.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fil.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fr.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fr.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/gu.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/gu.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/he.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/he.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hi.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hi.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hr.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hr.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hu.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hu.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/icudtl.dat
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/id.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/id.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/it.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/it.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ja.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ja.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/kn.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/kn.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ko.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ko.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lt.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lt.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lv.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lv.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ml.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ml.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/mr.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/mr.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ms.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ms.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nb.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nb.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nl.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nl.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pl.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pl.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_BR.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_BR.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_PT.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_PT.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/resources.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ro.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ro.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ru.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ru.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sk.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sk.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sl.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sl.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sr.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sr.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sv.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sv.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sw.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sw.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ta.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ta.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/te.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/te.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/th.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/th.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/tr.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/tr.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/uk.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/uk.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/v8_context_snapshot.bin
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/vi.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/vi.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_CN.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_CN.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_TW.lproj
./Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_TW.lproj/locale.pak
./Contents/Frameworks/Electron Framework.framework/Versions/Current
./Contents/Frameworks/Mantle.framework
./Contents/Frameworks/Mantle.framework/Headers
./Contents/Frameworks/Mantle.framework/Mantle
./Contents/Frameworks/Mantle.framework/Modules
./Contents/Frameworks/Mantle.framework/Resources
./Contents/Frameworks/Mantle.framework/Versions
./Contents/Frameworks/Mantle.framework/Versions/A
./Contents/Frameworks/Mantle.framework/Versions/A/Headers
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLJSONAdapter.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLManagedObjectAdapter.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLModel+NSCoding.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLModel.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLValueTransformer.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/Mantle.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSArray+MTLManipulationAdditions.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSDictionary+MTLManipulationAdditions.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSObject+MTLComparisonAdditions.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSValueTransformer+MTLInversionAdditions.h
./Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSValueTransformer+MTLPredefinedTransformerAdditions.h
./Contents/Frameworks/Mantle.framework/Versions/A/Mantle
./Contents/Frameworks/Mantle.framework/Versions/A/Modules
./Contents/Frameworks/Mantle.framework/Versions/A/Modules/module.modulemap
./Contents/Frameworks/Mantle.framework/Versions/A/Resources
./Contents/Frameworks/Mantle.framework/Versions/A/Resources/Info.plist
./Contents/Frameworks/Mantle.framework/Versions/Current
./Contents/Frameworks/ReactiveCocoa.framework
./Contents/Frameworks/ReactiveCocoa.framework/Headers
./Contents/Frameworks/ReactiveCocoa.framework/Modules
./Contents/Frameworks/ReactiveCocoa.framework/ReactiveCocoa
./Contents/Frameworks/ReactiveCocoa.framework/Resources
./Contents/Frameworks/ReactiveCocoa.framework/Versions
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/EXTKeyPathCoding.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/EXTScope.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSArray+RACSequenceAdditions.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSControl+RACCommandSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSControl+RACTextSignalSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSData+RACSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSDictionary+RACSequenceAdditions.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSEnumerator+RACSequenceAdditions.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSFileHandle+RACSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSIndexSet+RACSequenceAdditions.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSNotificationCenter+RACSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACAppKitBindings.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACDeallocating.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACLifting.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACPropertySubscribing.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACSelectorSignal.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSOrderedSet+RACSequenceAdditions.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSSet+RACSequenceAdditions.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSString+RACSequenceAdditions.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSString+RACSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSText+RACSignalSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSURLConnection+RACSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSUserDefaults+RACSupport.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACBacktrace.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACBehaviorSubject.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACChannel.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACCommand.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACCompoundDisposable.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACDisposable.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACEvent.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACGroupedSignal.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACKVOChannel.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACMulticastConnection.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACQueueScheduler+Subclass.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACQueueScheduler.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACReplaySubject.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScheduler+Subclass.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScheduler.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScopedDisposable.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSequence.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSerialDisposable.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSignal+Operations.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSignal.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACStream.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubject.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubscriber.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubscriptingAssignmentTrampoline.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTargetQueueScheduler.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTestScheduler.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTuple.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACUnit.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/ReactiveCocoa.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/metamacros.h
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Modules
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Modules/module.modulemap
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/ReactiveCocoa
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Resources
./Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Resources/Info.plist
./Contents/Frameworks/ReactiveCocoa.framework/Versions/Current
./Contents/Frameworks/Squirrel.framework
./Contents/Frameworks/Squirrel.framework/Headers
./Contents/Frameworks/Squirrel.framework/Modules
./Contents/Frameworks/Squirrel.framework/Resources
./Contents/Frameworks/Squirrel.framework/Squirrel
./Contents/Frameworks/Squirrel.framework/Versions
./Contents/Frameworks/Squirrel.framework/Versions/A
./Contents/Frameworks/Squirrel.framework/Versions/A/Headers
./Contents/Frameworks/Squirrel.framework/Versions/A/Headers/NSBundle+SQRLVersionExtensions.h
./Contents/Frameworks/Squirrel.framework/Versions/A/Headers/NSProcessInfo+SQRLVersionExtensions.h
./Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLDownloadedUpdate.h
./Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLUpdate.h
./Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLUpdater.h
./Contents/Frameworks/Squirrel.framework/Versions/A/Headers/Squirrel.h
./Contents/Frameworks/Squirrel.framework/Versions/A/Modules
./Contents/Frameworks/Squirrel.framework/Versions/A/Modules/module.modulemap
./Contents/Frameworks/Squirrel.framework/Versions/A/Resources
./Contents/Frameworks/Squirrel.framework/Versions/A/Resources/Info.plist
./Contents/Frameworks/Squirrel.framework/Versions/A/Resources/ShipIt
./Contents/Frameworks/Squirrel.framework/Versions/A/Squirrel
./Contents/Frameworks/Squirrel.framework/Versions/Current
./Contents/Frameworks/my-proj Helper (GPU).app
./Contents/Frameworks/my-proj Helper (GPU).app/Contents
./Contents/Frameworks/my-proj Helper (GPU).app/Contents/Info.plist
./Contents/Frameworks/my-proj Helper (GPU).app/Contents/MacOS
./Contents/Frameworks/my-proj Helper (GPU).app/Contents/MacOS/my-proj Helper (GPU)
./Contents/Frameworks/my-proj Helper (GPU).app/Contents/PkgInfo
./Contents/Frameworks/my-proj Helper (Plugin).app
./Contents/Frameworks/my-proj Helper (Plugin).app/Contents
./Contents/Frameworks/my-proj Helper (Plugin).app/Contents/Info.plist
./Contents/Frameworks/my-proj Helper (Plugin).app/Contents/MacOS
./Contents/Frameworks/my-proj Helper (Plugin).app/Contents/MacOS/my-proj Helper (Plugin)
./Contents/Frameworks/my-proj Helper (Plugin).app/Contents/PkgInfo
./Contents/Frameworks/my-proj Helper (Renderer).app
./Contents/Frameworks/my-proj Helper (Renderer).app/Contents
./Contents/Frameworks/my-proj Helper (Renderer).app/Contents/Info.plist
./Contents/Frameworks/my-proj Helper (Renderer).app/Contents/MacOS
./Contents/Frameworks/my-proj Helper (Renderer).app/Contents/MacOS/my-proj Helper (Renderer)
./Contents/Frameworks/my-proj Helper (Renderer).app/Contents/PkgInfo
./Contents/Frameworks/my-proj Helper.app
./Contents/Frameworks/my-proj Helper.app/Contents
./Contents/Frameworks/my-proj Helper.app/Contents/Info.plist
./Contents/Frameworks/my-proj Helper.app/Contents/MacOS
./Contents/Frameworks/my-proj Helper.app/Contents/MacOS/my-proj Helper
./Contents/Frameworks/my-proj Helper.app/Contents/PkgInfo
./Contents/Info.plist
./Contents/MacOS
./Contents/MacOS/my-proj
./Contents/PkgInfo
./Contents/Resources
./Contents/Resources/am.lproj
./Contents/Resources/app
./Contents/Resources/app/.webpack
./Contents/Resources/app/.webpack/main
./Contents/Resources/app/.webpack/main/index.js
./Contents/Resources/app/.webpack/main/index.js.map
./Contents/Resources/app/.webpack/renderer
./Contents/Resources/app/.webpack/renderer/0
./Contents/Resources/app/.webpack/renderer/0/index.js
./Contents/Resources/app/.webpack/renderer/10
./Contents/Resources/app/.webpack/renderer/10/index.js
./Contents/Resources/app/.webpack/renderer/11
./Contents/Resources/app/.webpack/renderer/11/index.js
./Contents/Resources/app/.webpack/renderer/12
./Contents/Resources/app/.webpack/renderer/12/index.js
./Contents/Resources/app/.webpack/renderer/13
./Contents/Resources/app/.webpack/renderer/13/index.js
./Contents/Resources/app/.webpack/renderer/14
./Contents/Resources/app/.webpack/renderer/14/index.js
./Contents/Resources/app/.webpack/renderer/15
./Contents/Resources/app/.webpack/renderer/15/index.js
./Contents/Resources/app/.webpack/renderer/16
./Contents/Resources/app/.webpack/renderer/16/index.js
./Contents/Resources/app/.webpack/renderer/17
./Contents/Resources/app/.webpack/renderer/17/index.js
./Contents/Resources/app/.webpack/renderer/18
./Contents/Resources/app/.webpack/renderer/18/index.js
./Contents/Resources/app/.webpack/renderer/19
./Contents/Resources/app/.webpack/renderer/19/index.js
./Contents/Resources/app/.webpack/renderer/2
./Contents/Resources/app/.webpack/renderer/2/index.js
./Contents/Resources/app/.webpack/renderer/20
./Contents/Resources/app/.webpack/renderer/20/index.js
./Contents/Resources/app/.webpack/renderer/21
./Contents/Resources/app/.webpack/renderer/21/index.js
./Contents/Resources/app/.webpack/renderer/22
./Contents/Resources/app/.webpack/renderer/22/index.js
./Contents/Resources/app/.webpack/renderer/23
./Contents/Resources/app/.webpack/renderer/23/index.js
./Contents/Resources/app/.webpack/renderer/24
./Contents/Resources/app/.webpack/renderer/24/index.js
./Contents/Resources/app/.webpack/renderer/25
./Contents/Resources/app/.webpack/renderer/25/index.js
./Contents/Resources/app/.webpack/renderer/26
./Contents/Resources/app/.webpack/renderer/26/index.js
./Contents/Resources/app/.webpack/renderer/27
./Contents/Resources/app/.webpack/renderer/27/index.js
./Contents/Resources/app/.webpack/renderer/28
./Contents/Resources/app/.webpack/renderer/28/index.js
./Contents/Resources/app/.webpack/renderer/29
./Contents/Resources/app/.webpack/renderer/29/index.js
./Contents/Resources/app/.webpack/renderer/3
./Contents/Resources/app/.webpack/renderer/3/index.js
./Contents/Resources/app/.webpack/renderer/30
./Contents/Resources/app/.webpack/renderer/30/index.js
./Contents/Resources/app/.webpack/renderer/31
./Contents/Resources/app/.webpack/renderer/31/index.js
./Contents/Resources/app/.webpack/renderer/32
./Contents/Resources/app/.webpack/renderer/32/index.js
./Contents/Resources/app/.webpack/renderer/33
./Contents/Resources/app/.webpack/renderer/33/index.js
./Contents/Resources/app/.webpack/renderer/34
./Contents/Resources/app/.webpack/renderer/34/index.js
./Contents/Resources/app/.webpack/renderer/35
./Contents/Resources/app/.webpack/renderer/35/index.js
./Contents/Resources/app/.webpack/renderer/36
./Contents/Resources/app/.webpack/renderer/36/index.js
./Contents/Resources/app/.webpack/renderer/37
./Contents/Resources/app/.webpack/renderer/37/index.js
./Contents/Resources/app/.webpack/renderer/38
./Contents/Resources/app/.webpack/renderer/38/index.js
./Contents/Resources/app/.webpack/renderer/39
./Contents/Resources/app/.webpack/renderer/39/index.js
./Contents/Resources/app/.webpack/renderer/4
./Contents/Resources/app/.webpack/renderer/4/index.js
./Contents/Resources/app/.webpack/renderer/40
./Contents/Resources/app/.webpack/renderer/40/index.js
./Contents/Resources/app/.webpack/renderer/41
./Contents/Resources/app/.webpack/renderer/41/index.js
./Contents/Resources/app/.webpack/renderer/42
./Contents/Resources/app/.webpack/renderer/42/index.js
./Contents/Resources/app/.webpack/renderer/43
./Contents/Resources/app/.webpack/renderer/43/index.js
./Contents/Resources/app/.webpack/renderer/44
./Contents/Resources/app/.webpack/renderer/44/index.js
./Contents/Resources/app/.webpack/renderer/45
./Contents/Resources/app/.webpack/renderer/45/index.js
./Contents/Resources/app/.webpack/renderer/46
./Contents/Resources/app/.webpack/renderer/46/index.js
./Contents/Resources/app/.webpack/renderer/47
./Contents/Resources/app/.webpack/renderer/47/index.js
./Contents/Resources/app/.webpack/renderer/48
./Contents/Resources/app/.webpack/renderer/48/index.js
./Contents/Resources/app/.webpack/renderer/49
./Contents/Resources/app/.webpack/renderer/49/index.js
./Contents/Resources/app/.webpack/renderer/5
./Contents/Resources/app/.webpack/renderer/5/index.js
./Contents/Resources/app/.webpack/renderer/50
./Contents/Resources/app/.webpack/renderer/50/index.js
./Contents/Resources/app/.webpack/renderer/51
./Contents/Resources/app/.webpack/renderer/51/index.js
./Contents/Resources/app/.webpack/renderer/52
./Contents/Resources/app/.webpack/renderer/52/index.js
./Contents/Resources/app/.webpack/renderer/53
./Contents/Resources/app/.webpack/renderer/53/index.js
./Contents/Resources/app/.webpack/renderer/54
./Contents/Resources/app/.webpack/renderer/54/index.js
./Contents/Resources/app/.webpack/renderer/55
./Contents/Resources/app/.webpack/renderer/55/index.js
./Contents/Resources/app/.webpack/renderer/56
./Contents/Resources/app/.webpack/renderer/56/index.js
./Contents/Resources/app/.webpack/renderer/57
./Contents/Resources/app/.webpack/renderer/57/index.js
./Contents/Resources/app/.webpack/renderer/58
./Contents/Resources/app/.webpack/renderer/58/index.js
./Contents/Resources/app/.webpack/renderer/59
./Contents/Resources/app/.webpack/renderer/59/index.js
./Contents/Resources/app/.webpack/renderer/6
./Contents/Resources/app/.webpack/renderer/6/index.js
./Contents/Resources/app/.webpack/renderer/60
./Contents/Resources/app/.webpack/renderer/60/index.js
./Contents/Resources/app/.webpack/renderer/61
./Contents/Resources/app/.webpack/renderer/61/index.js
./Contents/Resources/app/.webpack/renderer/62
./Contents/Resources/app/.webpack/renderer/62/index.js
./Contents/Resources/app/.webpack/renderer/63
./Contents/Resources/app/.webpack/renderer/63/index.js
./Contents/Resources/app/.webpack/renderer/64
./Contents/Resources/app/.webpack/renderer/64/index.js
./Contents/Resources/app/.webpack/renderer/7
./Contents/Resources/app/.webpack/renderer/7/index.js
./Contents/Resources/app/.webpack/renderer/8
./Contents/Resources/app/.webpack/renderer/8/index.js
./Contents/Resources/app/.webpack/renderer/9
./Contents/Resources/app/.webpack/renderer/9/index.js
./Contents/Resources/app/.webpack/renderer/9242107df7da7c6ad3cadf3133abcd37.ttf
./Contents/Resources/app/.webpack/renderer/css.worker.js
./Contents/Resources/app/.webpack/renderer/editor.worker.js
./Contents/Resources/app/.webpack/renderer/html.worker.js
./Contents/Resources/app/.webpack/renderer/json.worker.js
./Contents/Resources/app/.webpack/renderer/main_window
./Contents/Resources/app/.webpack/renderer/main_window/index.html
./Contents/Resources/app/.webpack/renderer/main_window/index.js
./Contents/Resources/app/.webpack/renderer/ts.worker.js
./Contents/Resources/app/node_modules
./Contents/Resources/app/package.json
./Contents/Resources/ar.lproj
./Contents/Resources/bg.lproj
./Contents/Resources/bn.lproj
./Contents/Resources/ca.lproj
./Contents/Resources/cs.lproj
./Contents/Resources/da.lproj
./Contents/Resources/de.lproj
./Contents/Resources/el.lproj
./Contents/Resources/electron.icns
./Contents/Resources/en.lproj
./Contents/Resources/en_GB.lproj
./Contents/Resources/es.lproj
./Contents/Resources/es_419.lproj
./Contents/Resources/et.lproj
./Contents/Resources/fa.lproj
./Contents/Resources/fi.lproj
./Contents/Resources/fil.lproj
./Contents/Resources/fr.lproj
./Contents/Resources/gu.lproj
./Contents/Resources/he.lproj
./Contents/Resources/hi.lproj
./Contents/Resources/hr.lproj
./Contents/Resources/hu.lproj
./Contents/Resources/id.lproj
./Contents/Resources/it.lproj
./Contents/Resources/ja.lproj
./Contents/Resources/kn.lproj
./Contents/Resources/ko.lproj
./Contents/Resources/lt.lproj
./Contents/Resources/lv.lproj
./Contents/Resources/ml.lproj
./Contents/Resources/mr.lproj
./Contents/Resources/ms.lproj
./Contents/Resources/nb.lproj
./Contents/Resources/nl.lproj
./Contents/Resources/pl.lproj
./Contents/Resources/pt_BR.lproj
./Contents/Resources/pt_PT.lproj
./Contents/Resources/ro.lproj
./Contents/Resources/ru.lproj
./Contents/Resources/sk.lproj
./Contents/Resources/sl.lproj
./Contents/Resources/sr.lproj
./Contents/Resources/sv.lproj
./Contents/Resources/sw.lproj
./Contents/Resources/ta.lproj
./Contents/Resources/te.lproj
./Contents/Resources/th.lproj
./Contents/Resources/tr.lproj
./Contents/Resources/uk.lproj
./Contents/Resources/vi.lproj
./Contents/Resources/zh_CN.lproj
./Contents/Resources/zh_TW.lproj
Preflight Checklist
Issue Details
Expected Behavior
Adding monaco-editor to my app created with electron-forge works fully in both development and deployment modes: code is syntax highlighted, and there are no errors in the dev console.
Actual Behavior
Adding monaco-editor to my app created with electron-forge works fully only in development mode. The app created by
electron-forge makeloads and runs, but it throws 404 errors when loading some JavaScript files, which break monaco-editor's web workers, causing the editor's syntax highlighting to fail. However the rest of the app functions for the most part: the code I added to renderer.js does run, and even monaco-editor does load and does work - just not fully, due to the missing JS files.The source of the trouble seems to be a mismatch between where monaco-editor's web-worker JS files exist on disk and what URL is used to attempt to load them. For example one desired file is at
/Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/2/index.jsbut the browser tries to requestfile:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/2/index.js, which fails. (note the absence then presence of…/main_window/…subdirectory, respectively)Note: I'm creating an issue here in electron-forge (rather than in monaco-editor or monaco-editor-webpack-plugin) because of the different results observed in
npm startvsnpm run make. The underlying error may well be in one of the other two repos (e.g. it's possible thatmonaco-editor-webpack-pluginis at fault for ignoring options that@electron-forge/plugin-webpacksets to support different entry points for different windows). That said, it felt appropriate to start here because it's ultimately differences in electron-forge's development vs deploy that is cascading into these user-visible differences, which seems to be counter to electron-forge's intent.To Reproduce
git clonehttps://github.com/sartak/electron-forge-issue-1675, which I'd created with:npx create-electron-app my-proj --template=webpack(commit 1)npm install monaco-editor-webpack-plugin monaco-editor file-loader(commit 2)cd electron-forge-issue-1675npm startnpm run makeopen out/my-proj-darwin-x64/my-proj.app/Annotated app dev console output
This first error is from trying to load
file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/2/index.jsHere's the relevant directory structure:
main_window/index.htmlis the "Welcome to your Electron application" template from the electron-forge scaffolding.main_window/index.jsis a 14-megabyte file that contains a minified version of the renderer JS (including my modifications to create and attach adivinto the DOM, then load monaco), as well as, at the very least, a lot of monaco's own source code. It (correctly) does not appear to include the main.js (which is correctly available in.../.webpack/main/index.js)The file that the system is trying to load is
.../.webpack/renderer/2/index.js(without the/main_window/subdirectory), which is the code-split module for the JavaScript syntax highlighting web worker. If I sinfully copy the file into the place that it's expected to be:Then
open out/my-proj-darwin-x64/my-proj.app/, this error goes away and syntax highlighting does work.This second error is from trying to load
file:///Users/shawn/tmp/my-proj/out/my-proj-darwin-x64/my-proj.app/Contents/Resources/app/.webpack/renderer/main_window/64/index.jsIt's equivalent to the previous error, except with
s/2/64/. It's another code-split module for a language-specific web worker.(Copying this chunk into the expected place helps monaco get further along, but then it fails in the same way looking for additional files, so I stopped here)
And then finally a few cascading errors resulting from the above two:
electron-forge makedebug logGenerated app directory layout