From cbb47570bd59b0fe86d85aa14c4a412a5a809269 Mon Sep 17 00:00:00 2001 From: Samuel Attard Date: Fri, 10 Jul 2020 14:48:50 -0700 Subject: [PATCH] build: run the JS linter on the build folder (#24513) --- build/webpack/get-outputs.js | 4 +- build/webpack/run-compiler.js | 24 +++--- build/webpack/webpack.config.base.js | 78 +++++++++---------- build/webpack/webpack.config.browser.js | 2 +- .../webpack.config.isolated_renderer.js | 2 +- build/webpack/webpack.config.renderer.js | 2 +- .../webpack.config.sandboxed_renderer.js | 4 +- build/webpack/webpack.config.worker.js | 2 +- script/lint.js | 2 +- 9 files changed, 60 insertions(+), 60 deletions(-) diff --git a/build/webpack/get-outputs.js b/build/webpack/get-outputs.js index fca601225be2..518a513b55c4 100644 --- a/build/webpack/get-outputs.js +++ b/build/webpack/get-outputs.js @@ -1,2 +1,2 @@ -process.env.PRINT_WEBPACK_GRAPH = true -require('./run-compiler') +process.env.PRINT_WEBPACK_GRAPH = true; +require('./run-compiler'); diff --git a/build/webpack/run-compiler.js b/build/webpack/run-compiler.js index 9aa75e7bf549..fd01fa8d07ac 100644 --- a/build/webpack/run-compiler.js +++ b/build/webpack/run-compiler.js @@ -1,25 +1,25 @@ const fs = require('fs'); -const path = require('path') -const webpack = require('webpack') +const path = require('path'); +const webpack = require('webpack'); -const configPath = process.argv[2] -const outPath = path.resolve(process.argv[3]) -const config = require(configPath) +const configPath = process.argv[2]; +const outPath = path.resolve(process.argv[3]); +const config = require(configPath); config.output = { path: path.dirname(outPath), filename: path.basename(outPath) -} +}; const { wrapInitWithProfilingTimeout } = config; delete config.wrapInitWithProfilingTimeout; webpack(config, (err, stats) => { if (err) { - console.error(err) - process.exit(1) + console.error(err); + process.exit(1); } else if (stats.hasErrors()) { - console.error(stats.toString('normal')) - process.exit(1) + console.error(stats.toString('normal')); + process.exit(1); } else { if (wrapInitWithProfilingTimeout) { const contents = fs.readFileSync(outPath, 'utf8'); @@ -33,6 +33,6 @@ if ((globalThis.process || binding.process).argv.includes("--profile-electron-in }`; fs.writeFileSync(outPath, newContents); } - process.exit(0) + process.exit(0); } -}) +}); diff --git a/build/webpack/webpack.config.base.js b/build/webpack/webpack.config.base.js index f507ea11d20a..4ab16f947035 100644 --- a/build/webpack/webpack.config.base.js +++ b/build/webpack/webpack.config.base.js @@ -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) ] - }) -} + }); +}; diff --git a/build/webpack/webpack.config.browser.js b/build/webpack/webpack.config.browser.js index 24fec49106e7..c01b97fcf8e3 100644 --- a/build/webpack/webpack.config.browser.js +++ b/build/webpack/webpack.config.browser.js @@ -1,4 +1,4 @@ module.exports = require('./webpack.config.base')({ target: 'browser', alwaysHasNode: true -}) +}); diff --git a/build/webpack/webpack.config.isolated_renderer.js b/build/webpack/webpack.config.isolated_renderer.js index 28b9e940fa97..917ae99d9b8d 100644 --- a/build/webpack/webpack.config.isolated_renderer.js +++ b/build/webpack/webpack.config.isolated_renderer.js @@ -1,4 +1,4 @@ module.exports = require('./webpack.config.base')({ target: 'isolated_renderer', alwaysHasNode: false -}) +}); diff --git a/build/webpack/webpack.config.renderer.js b/build/webpack/webpack.config.renderer.js index 8f890ee6e0d7..e4f2f0a71a79 100644 --- a/build/webpack/webpack.config.renderer.js +++ b/build/webpack/webpack.config.renderer.js @@ -3,4 +3,4 @@ module.exports = require('./webpack.config.base')({ alwaysHasNode: true, targetDeletesNodeGlobals: true, wrapInitWithProfilingTimeout: true -}) +}); diff --git a/build/webpack/webpack.config.sandboxed_renderer.js b/build/webpack/webpack.config.sandboxed_renderer.js index 9c38d6acb99b..9919a78927ac 100644 --- a/build/webpack/webpack.config.sandboxed_renderer.js +++ b/build/webpack/webpack.config.sandboxed_renderer.js @@ -1,5 +1,5 @@ module.exports = require('./webpack.config.base')({ target: 'sandboxed_renderer', alwaysHasNode: false, - wrapInitWithProfilingTimeout: true, -}) + wrapInitWithProfilingTimeout: true +}); diff --git a/build/webpack/webpack.config.worker.js b/build/webpack/webpack.config.worker.js index 7fc167b54f28..9ef2ebaf653b 100644 --- a/build/webpack/webpack.config.worker.js +++ b/build/webpack/webpack.config.worker.js @@ -3,4 +3,4 @@ module.exports = require('./webpack.config.base')({ loadElectronFromAlternateTarget: 'renderer', alwaysHasNode: true, targetDeletesNodeGlobals: true -}) +}); diff --git a/script/lint.js b/script/lint.js index ca03f0982e87..fc1f5c3ddb70 100755 --- a/script/lint.js +++ b/script/lint.js @@ -90,7 +90,7 @@ const LINTERS = [{ } }, { key: 'javascript', - roots: ['lib', 'spec', 'spec-main', 'script', 'default_app'], + roots: ['lib', 'spec', 'spec-main', 'script', 'default_app', 'build'], ignoreRoots: ['spec/node_modules', 'spec-main/node_modules'], test: filename => filename.endsWith('.js') || filename.endsWith('.ts'), run: (opts, filenames) => {