|
@@ -1,39 +1,39 @@
|
|
|
-const fs = require('fs')
|
|
|
-const path = require('path')
|
|
|
-const webpack = require('webpack')
|
|
|
+const fs = require('fs');
|
|
|
+const path = require('path');
|
|
|
+const webpack = require('webpack');
|
|
|
const TerserPlugin = require('terser-webpack-plugin');
|
|
|
|
|
|
-const electronRoot = path.resolve(__dirname, '../..')
|
|
|
+const electronRoot = path.resolve(__dirname, '../..');
|
|
|
|
|
|
-const onlyPrintingGraph = !!process.env.PRINT_WEBPACK_GRAPH
|
|
|
+const onlyPrintingGraph = !!process.env.PRINT_WEBPACK_GRAPH;
|
|
|
|
|
|
class AccessDependenciesPlugin {
|
|
|
- apply(compiler) {
|
|
|
+ apply (compiler) {
|
|
|
// Only hook into webpack when we are printing the dependency graph
|
|
|
- if (!onlyPrintingGraph) return
|
|
|
+ if (!onlyPrintingGraph) return;
|
|
|
|
|
|
compiler.hooks.compilation.tap('AccessDependenciesPlugin', compilation => {
|
|
|
compilation.hooks.finishModules.tap('AccessDependenciesPlugin', modules => {
|
|
|
- const filePaths = modules.map(m => m.resource).filter(p => p).map(p => path.relative(electronRoot, p))
|
|
|
- console.info(JSON.stringify(filePaths))
|
|
|
- })
|
|
|
- })
|
|
|
+ const filePaths = modules.map(m => m.resource).filter(p => p).map(p => path.relative(electronRoot, p));
|
|
|
+ console.info(JSON.stringify(filePaths));
|
|
|
+ });
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
|
|
|
const defines = {
|
|
|
BUILDFLAG: onlyPrintingGraph ? '(a => a)' : ''
|
|
|
-}
|
|
|
+};
|
|
|
|
|
|
-const buildFlagsPrefix = '--buildflags='
|
|
|
+const buildFlagsPrefix = '--buildflags=';
|
|
|
const buildFlagArg = process.argv.find(arg => arg.startsWith(buildFlagsPrefix));
|
|
|
|
|
|
if (buildFlagArg) {
|
|
|
- const buildFlagPath = buildFlagArg.substr(buildFlagsPrefix.length)
|
|
|
+ const buildFlagPath = buildFlagArg.substr(buildFlagsPrefix.length);
|
|
|
|
|
|
- const flagFile = fs.readFileSync(buildFlagPath, 'utf8')
|
|
|
+ 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])\)/)
|
|
|
+ const flagMatch = line.match(/#define BUILDFLAG_INTERNAL_(.+?)\(\) \(([01])\)/);
|
|
|
if (flagMatch) {
|
|
|
const [, flagName, flagValue] = flagMatch;
|
|
|
defines[flagName] = JSON.stringify(Boolean(parseInt(flagValue, 10)));
|
|
@@ -41,27 +41,27 @@ if (buildFlagArg) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-const ignoredModules = []
|
|
|
+const ignoredModules = [];
|
|
|
|
|
|
-if (defines['ENABLE_DESKTOP_CAPTURER'] === 'false') {
|
|
|
+if (defines.ENABLE_DESKTOP_CAPTURER === 'false') {
|
|
|
ignoredModules.push(
|
|
|
'@electron/internal/browser/desktop-capturer',
|
|
|
'@electron/internal/browser/api/desktop-capturer',
|
|
|
'@electron/internal/renderer/api/desktop-capturer'
|
|
|
- )
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
-if (defines['ENABLE_REMOTE_MODULE'] === 'false') {
|
|
|
+if (defines.ENABLE_REMOTE_MODULE === 'false') {
|
|
|
ignoredModules.push(
|
|
|
'@electron/internal/browser/remote/server',
|
|
|
'@electron/internal/renderer/api/remote'
|
|
|
- )
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
-if (defines['ENABLE_VIEWS_API'] === 'false') {
|
|
|
+if (defines.ENABLE_VIEWS_API === 'false') {
|
|
|
ignoredModules.push(
|
|
|
'@electron/internal/browser/api/views/image-view.js'
|
|
|
- )
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
module.exports = ({
|
|
@@ -71,9 +71,9 @@ module.exports = ({
|
|
|
target,
|
|
|
wrapInitWithProfilingTimeout
|
|
|
}) => {
|
|
|
- let entry = path.resolve(electronRoot, 'lib', target, 'init.ts')
|
|
|
+ let entry = path.resolve(electronRoot, 'lib', target, 'init.ts');
|
|
|
if (!fs.existsSync(entry)) {
|
|
|
- entry = path.resolve(electronRoot, 'lib', target, 'init.js')
|
|
|
+ entry = path.resolve(electronRoot, 'lib', target, 'init.js');
|
|
|
}
|
|
|
|
|
|
return ({
|
|
@@ -88,16 +88,16 @@ module.exports = ({
|
|
|
resolve: {
|
|
|
alias: {
|
|
|
'@electron/internal': path.resolve(electronRoot, 'lib'),
|
|
|
- 'electron': path.resolve(electronRoot, 'lib', loadElectronFromAlternateTarget || target, 'api', 'exports', 'electron.ts'),
|
|
|
+ electron: path.resolve(electronRoot, 'lib', loadElectronFromAlternateTarget || target, 'api', 'exports', 'electron.ts'),
|
|
|
// Force timers to resolve to our dependency that doesn't use window.postMessage
|
|
|
- 'timers': path.resolve(electronRoot, 'node_modules', 'timers-browserify', 'main.js')
|
|
|
+ timers: path.resolve(electronRoot, 'node_modules', 'timers-browserify', 'main.js')
|
|
|
},
|
|
|
extensions: ['.ts', '.js']
|
|
|
},
|
|
|
module: {
|
|
|
rules: [{
|
|
|
test: (moduleName) => !onlyPrintingGraph && ignoredModules.includes(moduleName),
|
|
|
- loader: 'null-loader',
|
|
|
+ loader: 'null-loader'
|
|
|
}, {
|
|
|
test: /\.ts$/,
|
|
|
loader: 'ts-loader',
|
|
@@ -106,7 +106,7 @@ module.exports = ({
|
|
|
transpileOnly: onlyPrintingGraph,
|
|
|
ignoreDiagnostics: [
|
|
|
// File '{0}' is not under 'rootDir' '{1}'.
|
|
|
- 6059,
|
|
|
+ 6059
|
|
|
]
|
|
|
}
|
|
|
}]
|
|
@@ -116,7 +116,7 @@ module.exports = ({
|
|
|
__filename: false,
|
|
|
// We provide our own "timers" import above, any usage of setImmediate inside
|
|
|
// one of our renderer bundles should import it from the 'timers' package
|
|
|
- setImmediate: false,
|
|
|
+ setImmediate: false
|
|
|
},
|
|
|
optimization: {
|
|
|
minimize: true,
|
|
@@ -124,10 +124,10 @@ module.exports = ({
|
|
|
new TerserPlugin({
|
|
|
terserOptions: {
|
|
|
keep_classnames: true,
|
|
|
- keep_fnames: true,
|
|
|
- },
|
|
|
- }),
|
|
|
- ],
|
|
|
+ keep_fnames: true
|
|
|
+ }
|
|
|
+ })
|
|
|
+ ]
|
|
|
},
|
|
|
plugins: [
|
|
|
new AccessDependenciesPlugin(),
|
|
@@ -135,13 +135,13 @@ module.exports = ({
|
|
|
new webpack.ProvidePlugin({
|
|
|
process: ['@electron/internal/renderer/webpack-provider', 'process'],
|
|
|
global: ['@electron/internal/renderer/webpack-provider', '_global'],
|
|
|
- Buffer: ['@electron/internal/renderer/webpack-provider', 'Buffer'],
|
|
|
+ Buffer: ['@electron/internal/renderer/webpack-provider', 'Buffer']
|
|
|
})
|
|
|
] : []),
|
|
|
new webpack.ProvidePlugin({
|
|
|
- Promise: ['@electron/internal/common/webpack-globals-provider', 'Promise'],
|
|
|
+ Promise: ['@electron/internal/common/webpack-globals-provider', 'Promise']
|
|
|
}),
|
|
|
- new webpack.DefinePlugin(defines),
|
|
|
+ new webpack.DefinePlugin(defines)
|
|
|
]
|
|
|
- })
|
|
|
-}
|
|
|
+ });
|
|
|
+};
|