111 lines
3.8 KiB
JavaScript
111 lines
3.8 KiB
JavaScript
const path = require('path');
|
|
const CleanWebpackPlugin = require('clean-webpack-plugin');
|
|
|
|
module.exports = (env, argv) => ({
|
|
entry: {
|
|
uhr: './src/index.ts',
|
|
bundle: './src/bundle.ts',
|
|
layout_de: require.resolve('./src/layout/layout-de.ts'),
|
|
layout_de_ch: require.resolve('./src/layout/layout-de_ch.ts'),
|
|
layout_de_ch_genau: require.resolve('./src/layout/layout-de_ch_genau.ts'),
|
|
layout_dk: require.resolve('./src/layout/layout-dk.ts'),
|
|
layout_en: require.resolve('./src/layout/layout-en.ts'),
|
|
layout_es: require.resolve('./src/layout/layout-es.ts'),
|
|
layout_fr: require.resolve('./src/layout/layout-fr.ts'),
|
|
layout_it: require.resolve('./src/layout/layout-it.ts'),
|
|
layout_nl: require.resolve('./src/layout/layout-nl.ts'),
|
|
layout_pt: require.resolve('./src/layout/layout-pt.ts'),
|
|
style_main: require.resolve('./resources/styles/uhr.scss'),
|
|
style_black: require.resolve('./css/uhr-black.scss'),
|
|
style_blue: require.resolve('./css/uhr-blue.scss'),
|
|
style_green: require.resolve('./css/uhr-green.scss'),
|
|
style_pink: require.resolve('./css/uhr-pink.scss'),
|
|
style_red: require.resolve('./css/uhr-red.scss'),
|
|
style_white: require.resolve('./css/uhr-white.scss'),
|
|
style_yellow: require.resolve('./css/uhr-yellow.scss')
|
|
},
|
|
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: /\.tsx?$/,
|
|
exclude: /node_modules/,
|
|
use: 'ts-loader'
|
|
}
|
|
]
|
|
},
|
|
plugins: [
|
|
new CleanWebpackPlugin({
|
|
cleanAfterEveryBuildPatterns: ['deleteme/'],
|
|
protectWebpackAssets: false
|
|
})
|
|
],
|
|
resolve: {
|
|
extensions: ['.tsx', '.ts', '.js']
|
|
},
|
|
output: {
|
|
filename: (chunkData) => {
|
|
if (chunkData.chunk.name === 'uhr') {
|
|
return 'lib/uhr.js';
|
|
}
|
|
if (chunkData.chunk.name === 'bundle') {
|
|
return 'lib/uhr.bundle.js';
|
|
}
|
|
if (chunkData.chunk.name.startsWith('layout')) {
|
|
return 'lib/[name].js';
|
|
}
|
|
return 'deleteme/[name]';
|
|
},
|
|
path: path.resolve(__dirname, 'dist')
|
|
},
|
|
externals: {
|
|
jquery: 'jQuery',
|
|
'js-cookie': 'Cookies'
|
|
}
|
|
});
|