cruk-pattern-library-api
Version:
CRUK Pattern Library API
108 lines (106 loc) • 2.28 kB
JavaScript
const path = require('path');
const StyleLintPlugin = require('stylelint-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
entry: {
'patterns': './main.js',
'index': './src/index.js',
},
output: {
path: path.resolve(__dirname, 'lib'),
filename: '[name].js',
library: 'patterns',
libraryTarget: 'umd',
umdNamedDefine: true,
globalObject: 'typeof self !== \'undefined\' ? self : this'
},
devServer: {
inline:true,
port: 9999,
publicPath: '/',
contentBase: './lib',
},
optimization: {
splitChunks: {
cacheGroups: {
styles: {
name: 'styles',
test: /\.css$/,
chunks: 'all',
enforce: true
}
}
}
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /(node_modules|bower_components)/,
use: [
{
loader: 'babel-loader',
query: {
presets: [
'@babel/react',
'@babel/env'
],
plugins: [
'@babel/plugin-proposal-class-properties'
]
}
},
'eslint-loader'
]
},
{
test: /\.(sa|sc|c)ss$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
minimize: {
safe: true
}
}
},
{
loader: 'postcss-loader',
options: {
plugins: () => [require('autoprefixer')({
'browsers': ['> 1%', 'last 2 versions', 'ie >= 10']
})],
grid: true
}
},
{
loader: 'sass-loader',
options: {}
}
]
}
]
},
plugins: [
new StyleLintPlugin({
context: './patterns',
syntax: 'scss',
}),
new MiniCssExtractPlugin({
filename: 'all.css',
})
],
resolve: {
alias: {
react: path.resolve('./node_modules/react'),
},
extensions:['.js', '.jsx', '.webpack.js', '.web.js','*']
},
stats: {
colors: true
},
node: {
fs: 'empty'
}
};