const path = require('path'); const CleanWebpackPlugin = require('clean-webpack-plugin'); module.exports = (env, argv) => ({ entry: { uhr: './src/index.ts', style_main: require.resolve('./resources/styles/uhr.scss'), style_black: require.resolve('./css/uhr-black.css'), style_blue: require.resolve('./css/uhr-blue.css'), style_green: require.resolve('./css/uhr-green.css'), style_pink: require.resolve('./css/uhr-pink.css'), style_red: require.resolve('./css/uhr-red.css'), style_white: require.resolve('./css/uhr-white.css'), style_yellow: require.resolve('./css/uhr-yellow.css') }, module: { rules: [ { enforce: 'pre', test: /\.tsx?$/, exclude: /node_modules/, use: 'eslint-loader' }, { test: /\.(png|svg|jpg|gif|woff)$/, use: [ { loader: 'file-loader', options: { name: 'assets/[name].[ext]' } } ] }, { test: /\.s?css$/, use: argv.mode !== 'production' ? [ 'style-loader', 'css-loader', 'sass-loader' ] : [ { loader: 'file-loader', options: { name: 'assets/[name].css' } }, { loader: 'extract-loader', options: { publicPath: '../', } }, 'css-loader', { loader: 'sass-loader', options: { outputStyle: 'compressed' } } ] }, // { // test: /\.s?css$/, // use: [ // // fallback to style-loader in development // process.env.NODE_ENV !== 'production' ? 'style-loader' : MiniCssExtractPlugin.loader, // 'css-loader', // 'sass-loader' // ] // }, { test: /\.tsx?$/, exclude: /node_modules/, use: 'ts-loader' } ] }, plugins: [ new CleanWebpackPlugin({ cleanAfterEveryBuildPatterns: ['**/*.deleteme'], protectWebpackAssets: false }) ], resolve: { extensions: ['.tsx', '.ts', '.js'] }, output: { filename: (chunkData) => chunkData.chunk.name === 'uhr' ? 'uhr.js' : '[name].deleteme', library: 'uhr', path: path.resolve(__dirname, 'dist') }, externals: { jquery: 'jQuery', 'js-cookie': 'Cookies' } });