fix(webpack): use production mode in production builds (#8007)

This commit is contained in:
Pavel Feldman 2021-08-05 12:07:43 -07:00 committed by GitHub
parent 8792955f82
commit 19b673e467
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 8 deletions

View File

@ -1,15 +1,17 @@
const path = require('path');
const HtmlWebPackPlugin = require('html-webpack-plugin');
const mode = process.env.NODE_ENV === 'production' ? 'production' : 'development';
module.exports = {
mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',
mode,
entry: {
app: path.join(__dirname, 'index.tsx'),
},
resolve: {
extensions: ['.ts', '.js', '.tsx', '.jsx']
},
devtool: 'source-map',
devtool: mode === 'production' ? false : 'source-map',
output: {
globalObject: 'self',
filename: '[name].bundle.js',

View File

@ -1,15 +1,16 @@
const path = require('path');
const HtmlWebPackPlugin = require('html-webpack-plugin');
const mode = process.env.NODE_ENV === 'production' ? 'production' : 'development';
module.exports = {
mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',
mode,
entry: {
app: path.join(__dirname, 'index.tsx'),
},
resolve: {
extensions: ['.ts', '.js', '.tsx', '.jsx']
},
devtool: 'source-map',
devtool: mode === 'production' ? false : 'source-map',
output: {
globalObject: 'self',
filename: '[name].bundle.js',

View File

@ -14,11 +14,25 @@
* limitations under the License.
*/
// @ts-check
const child_process = require('child_process');
const path = require('path');
const chokidar = require('chokidar');
const fs = require('fs');
/**
* @typedef {{
* command: string,
* args: string[],
* shell: boolean,
* env?: NodeJS.ProcessEnv,
* }} Step
*/
/**
* @type {Step[]}
*/
const steps = [];
const onChanges = [];
const copyFiles = [];
@ -59,17 +73,23 @@ function runWatch() {
}
async function runBuild() {
function runStep(command, args, shell) {
const out = child_process.spawnSync(command, args, { stdio: 'inherit', shell });
/**
* @param {Step} step
*/
function runStep(step) {
const out = child_process.spawnSync(step.command, step.args, { stdio: 'inherit', shell: step.shell, env: {
...process.env,
...step.env
} });
if (out.status)
process.exit(out.status);
}
for (const step of steps)
runStep(step.command, step.args, step.shell);
runStep(step);
for (const onChange of onChanges) {
if (!onChange.committed)
runStep('node', [filePath(onChange.script)], false);
runStep({ command: 'node', args: [filePath(onChange.script)], shell: false });
}
for (const {files, from, to, ignored} of copyFiles) {
const watcher = chokidar.watch([filePath(files)], {