webpack.config.js 1.06 KB
const path = require('path')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')

module.exports = {
  mode: 'production',
  entry: './src/index.tsx',
  output: {
    filename: '${projectName}.js',
    path: path.resolve(__dirname, 'dist'),
    library: '${projectName}',
    libraryTarget: 'umd'
  },
  resolve: {
    extensions: [
      '.ts',
      '.tsx',
      '.js'
    ]
  },
  module: {
    rules: [{
      test: /\.tsx?$/,
      loader: 'babel-loader'
    }, {
      test: /\.less$/,
      use: [
        MiniCssExtractPlugin.loader,
        {
          loader: 'css-loader',
          options: {
            modules: true,
            localIdentName: '${projectName}__[local]__[hash:base64:5]',
            importLoaders: 1
          }
        }, {
          loader: 'less-loader'
        }
      ]
    }]
  },
  externals: {
    react: {
      commonjs: 'react',
      amd: 'react',
      root: 'React',
      commonjs2: 'react'
    }
  },
  plugins: [
    new MiniCssExtractPlugin({
      filename: '${projectName}.css',
      chunkFilename: '[id].css'
    })
  ]
}