Browse Source

build: run the JS linter on the build folder (#24513)

Samuel Attard 4 years ago
parent
commit
cbb47570bd

+ 2 - 2
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');

+ 12 - 12
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);
   }
-})
+});

+ 39 - 39
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)
     ]
-  })
-}
+  });
+};

+ 1 - 1
build/webpack/webpack.config.browser.js

@@ -1,4 +1,4 @@
 module.exports = require('./webpack.config.base')({
   target: 'browser',
   alwaysHasNode: true
-})
+});

+ 1 - 1
build/webpack/webpack.config.isolated_renderer.js

@@ -1,4 +1,4 @@
 module.exports = require('./webpack.config.base')({
   target: 'isolated_renderer',
   alwaysHasNode: false
-})
+});

+ 1 - 1
build/webpack/webpack.config.renderer.js

@@ -3,4 +3,4 @@ module.exports = require('./webpack.config.base')({
   alwaysHasNode: true,
   targetDeletesNodeGlobals: true,
   wrapInitWithProfilingTimeout: true
-})
+});

+ 2 - 2
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
+});

+ 1 - 1
build/webpack/webpack.config.worker.js

@@ -3,4 +3,4 @@ module.exports = require('./webpack.config.base')({
   loadElectronFromAlternateTarget: 'renderer',
   alwaysHasNode: true,
   targetDeletesNodeGlobals: true
-})
+});

+ 1 - 1
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) => {