// Configuration const path = require('path'); const webpack = require('webpack'); const TerserPlugin = require('terser-webpack-plugin'); const getPackageJson = require('./scripts/getPackageJson'); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const CssMinimizerPlugin = require("css-minimizer-webpack-plugin"); const { version, name, license, repository, author } = getPackageJson('version', 'name', 'license', 'repository', 'author'); const banner = ` ${name} v${version} ${repository.url} Copyright (c) ${author.replace(/ *<[^)]*> */g, " ")} and project contributors. This source code is licensed under the ${license} license found in the LICENSE file in the root directory of this source tree. `; module.exports = { mode: "production", entry: './src/lib/index.ts', target: 'es5', output: { filename: 'index.js', path: path.resolve(__dirname, 'build'), library: "SimpleKeyboard", libraryTarget: 'umd', clean: true, globalObject: 'this', hashFunction: 'xxhash64', chunkFormat: 'module', environment: { arrowFunction: false } }, optimization: { minimize: true, minimizer: [ new TerserPlugin({ extractComments: false }), new CssMinimizerPlugin() ], }, devServer: { open: true, hot: true, host: "localhost", static: path.join(__dirname, 'demo'), port: 9000 }, module: { rules: [ { test: /\.m?(j|t)s$/, exclude: /(node_modules|bower_components)/, use: { loader: 'babel-loader' } }, { test: /\.(sa|sc|c)ss$/, use: [ MiniCssExtractPlugin.loader, { loader: "css-loader" }, { loader: "postcss-loader", options: { postcssOptions: { plugins: [ [ "autoprefixer" ], ], }, }, }, ], }, { test: /\.(png|jpe?g|gif|svg|eot|ttf|woff|woff2)$/, use: ['url-loader'], } ] }, plugins: [ new MiniCssExtractPlugin({ filename: 'css/index.css' }), new webpack.BannerPlugin(banner) ], resolve: { extensions: ['.ts', '.js', '.json'] } };