|
@@ -20,6 +20,54 @@ class AccessDependenciesPlugin {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+const defines = {
|
|
|
+ BUILDFLAG: ' '
|
|
|
+}
|
|
|
+
|
|
|
+const buildFlagsPrefix = '--buildflags='
|
|
|
+const buildFlagArg = process.argv.find(arg => arg.startsWith(buildFlagsPrefix));
|
|
|
+
|
|
|
+if (buildFlagArg) {
|
|
|
+ const buildFlagPath = buildFlagArg.substr(buildFlagsPrefix.length)
|
|
|
+
|
|
|
+ const flagFile = fs.readFileSync(buildFlagPath, 'utf8')
|
|
|
+ for (const line of flagFile.split(/(\r\n|\r|\n)/g)) {
|
|
|
+ const flagMatch = line.match(/#define BUILDFLAG_INTERNAL_(.+?)\(\) \(([01])\)/)
|
|
|
+ if (flagMatch) {
|
|
|
+ const flagName = flagMatch[1];
|
|
|
+ const flagValue = flagMatch[2];
|
|
|
+ defines[flagName] = JSON.stringify(Boolean(parseInt(flagValue, 10)));
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const ignoredModules = []
|
|
|
+
|
|
|
+if (defines['ENABLE_DESKTOP_CAPTURER'] === 'false') {
|
|
|
+ ignoredModules.push(
|
|
|
+ '@electron/internal/browser/desktop-capturer',
|
|
|
+ '@electron/internal/renderer/api/desktop-capturer'
|
|
|
+ )
|
|
|
+}
|
|
|
+
|
|
|
+if (defines['ENABLE_REMOTE_MODULE'] === 'false') {
|
|
|
+ ignoredModules.push(
|
|
|
+ '@electron/internal/browser/remote/server',
|
|
|
+ '@electron/internal/renderer/api/remote'
|
|
|
+ )
|
|
|
+}
|
|
|
+
|
|
|
+if (defines['ENABLE_VIEWS_API'] === 'false') {
|
|
|
+ ignoredModules.push(
|
|
|
+ '@electron/internal/browser/api/views/image-view.js'
|
|
|
+ )
|
|
|
+}
|
|
|
+
|
|
|
+const alias = {}
|
|
|
+for (const ignoredModule of ignoredModules) {
|
|
|
+ alias[ignoredModule] = path.resolve(electronRoot, 'lib/common/dummy.js')
|
|
|
+}
|
|
|
+
|
|
|
module.exports = ({
|
|
|
alwaysHasNode,
|
|
|
loadElectronFromAlternateTarget,
|
|
@@ -41,6 +89,7 @@ module.exports = ({
|
|
|
},
|
|
|
resolve: {
|
|
|
alias: {
|
|
|
+ ...alias,
|
|
|
'@electron/internal': path.resolve(electronRoot, 'lib'),
|
|
|
'electron': path.resolve(electronRoot, 'lib', loadElectronFromAlternateTarget || target, 'api', 'exports', 'electron.ts'),
|
|
|
// Force timers to resolve to our dependency that doens't use window.postMessage
|
|
@@ -78,6 +127,7 @@ module.exports = ({
|
|
|
new webpack.ProvidePlugin({
|
|
|
Promise: ['@electron/internal/common/webpack-globals-provider', 'Promise'],
|
|
|
}),
|
|
|
+ new webpack.DefinePlugin(defines),
|
|
|
]
|
|
|
})
|
|
|
}
|