#javascript #development #tools

idea

npm install --save-dev webpack webpack-cli

in package.json script:

"build:dev": "webpack",
"build:prod": "NODE_ENV=production webpack",

in webpack.config.json. Define NODE_ENV=production to minimize.

const path = require('path');

const common = {
  module: {
    rules: [
      { test: /\.tsx?$/, use: 'ts-loader' },
      {
        test: /\.jsx?$/,
        loader: "babel-loader",
        exclude: [/node_modules/, /public/],
      },
      { test: /\.css$/i, use: ["style-loader", 'css-loader'] },
    ],
  },
  resolve: {
    extensions: ['.tsx', '.ts', '.js', '.jsx', '.css'],
  },
  mode: "development",
  optimization: {
    minimizer: [
      // new TerserPlugin()
    ]
  },
  plugins: [
  ],
}

const ui = {
  entry: './src/client/ui.ts',
  output: {
    path: path.resolve(__dirname, 'dist', "public"),
    filename: 'ui.js',
    library: "ui",
    libraryTarget: "umd"
  },
};

const exp = [ui];
exp.forEach((ex) => Object.assign(ex, common))

module.exports = exp;

Use with plain javascript and jsx:

npm install -D babel-loader @babel/core @babel/preset-env