You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.1 KiB
110 lines
3.1 KiB
'use strict'; |
|
|
|
const path = require('path'); |
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); |
|
const TSConfigPathsPlugin = require('tsconfig-paths-webpack-plugin'); |
|
const CopyWebpackPlugin = require('copy-webpack-plugin'); |
|
const { CleanWebpackPlugin } = require('clean-webpack-plugin'); |
|
const ESLintPlugin = require('eslint-webpack-plugin'); |
|
|
|
const SOURCE_ROOT = __dirname + '/src/main/webpack'; |
|
|
|
const resolve = { |
|
extensions: ['.js', '.ts'], |
|
plugins: [new TSConfigPathsPlugin({ |
|
configFile: './tsconfig.json' |
|
})] |
|
}; |
|
|
|
module.exports = { |
|
resolve: resolve, |
|
entry: { |
|
site: SOURCE_ROOT + '/site/main.ts' |
|
}, |
|
output: { |
|
filename: (chunkData) => { |
|
return chunkData.chunk.name === 'dependencies' ? 'clientlib-dependencies/[name].js' : 'clientlib-site/[name].js'; |
|
}, |
|
path: path.resolve(__dirname, 'dist') |
|
}, |
|
module: { |
|
rules: [ |
|
{ |
|
test: /\.tsx?$/, |
|
exclude: /node_modules/, |
|
use: [ |
|
{ |
|
loader: 'ts-loader' |
|
}, |
|
{ |
|
loader: 'glob-import-loader', |
|
options: { |
|
resolve: resolve |
|
} |
|
} |
|
] |
|
}, |
|
{ |
|
test: /\.scss$/, |
|
use: [ |
|
MiniCssExtractPlugin.loader, |
|
{ |
|
loader: 'css-loader', |
|
options: { |
|
url: false |
|
} |
|
}, |
|
{ |
|
loader: 'postcss-loader', |
|
options: { |
|
plugins() { |
|
return [ |
|
require('autoprefixer') |
|
]; |
|
} |
|
} |
|
}, |
|
{ |
|
loader: 'sass-loader', |
|
}, |
|
{ |
|
loader: 'glob-import-loader', |
|
options: { |
|
resolve: resolve |
|
} |
|
} |
|
] |
|
} |
|
] |
|
}, |
|
plugins: [ |
|
new CleanWebpackPlugin(), |
|
new ESLintPlugin({ |
|
extensions: ['js', 'ts', 'tsx'] |
|
}), |
|
new MiniCssExtractPlugin({ |
|
filename: 'clientlib-[name]/[name].css' |
|
}), |
|
new CopyWebpackPlugin({ |
|
patterns: [ |
|
{ from: path.resolve(__dirname, SOURCE_ROOT + '/resources'), to: './clientlib-site/' } |
|
] |
|
}) |
|
], |
|
stats: { |
|
assetsSort: 'chunks', |
|
builtAt: true, |
|
children: false, |
|
chunkGroups: true, |
|
chunkOrigins: true, |
|
colors: false, |
|
errors: true, |
|
errorDetails: true, |
|
env: true, |
|
modules: false, |
|
performance: true, |
|
providedExports: false, |
|
source: false, |
|
warnings: true |
|
} |
|
};
|
|
|