forked from kamilio/axiom-1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.static.config.js
122 lines (120 loc) · 3.51 KB
/
webpack.static.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
const path = require('path');
const webpack = require('webpack');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const StaticSiteGeneratorPlugin = require('static-site-generator-webpack-plugin');
const generateComponentProps = require('./scripts/component-docs');
const modulesToTranspile = [
'get-own-enumerable-property-symbols',
'stringify-object',
];
module.exports = {
entry: './style-guide/static.js',
module: {
rules: [{
test: /\.js$/,
exclude: new RegExp(`node_modules/(?!(${modulesToTranspile.join('|')}))`),
use: ['babel-loader'],
}, {
test: /\.ejs$/,
use: ['ejs-loader'],
}, {
test: /\.css$/,
loader: ExtractTextPlugin.extract({
use: [{
loader: 'css-loader',
options: {
importLoaders: 1,
minimize: true,
},
}, {
loader: 'postcss-loader',
}],
}),
}],
},
output: {
filename: './assets/bundle.[hash].min.js',
path: path.resolve(__dirname, 'static'),
publicPath: '/',
libraryTarget: 'umd',
},
plugins: [
new CleanWebpackPlugin(['static']),
new ExtractTextPlugin({
filename: './assets/bundle.[hash].min.css',
}),
new CopyWebpackPlugin([{
from: './style-guide/assets',
to: './assets',
}]),
new StaticSiteGeneratorPlugin({
paths: [
'/',
'/docs/materials/colors',
'/docs/materials/date-and-time',
'/docs/materials/numbers',
'/docs/components/alert',
'/docs/components/avatar',
'/docs/components/badge',
'/docs/components/base',
'/docs/components/button',
'/docs/components/card',
'/docs/components/color-picker',
'/docs/components/context',
'/docs/components/dialog',
'/docs/components/dropdown',
'/docs/components/form',
'/docs/components/grid',
'/docs/components/icon',
'/docs/components/image',
'/docs/components/label',
'/docs/components/list',
'/docs/components/logo',
'/docs/components/menu',
'/docs/components/pictogram',
'/docs/components/position',
'/docs/components/progress',
'/docs/components/reveal',
'/docs/components/statcard',
'/docs/components/table',
'/docs/components/tabset',
'/docs/components/toolbar',
'/docs/components/tooltip',
'/docs/components/typography',
'/docs/composites/login',
'/docs/composites/pagination',
'/docs/composites/usermenu',
'/docs/charts/bars',
'/docs/charts/chart',
'/docs/charts/chart-heading',
'/docs/charts/chart-table',
'/docs/charts/column-chart',
'/docs/charts/data-picker',
'/docs/charts/data-point',
'/docs/charts/dot-plot',
'/docs/charts/wordcloud',
],
}),
new webpack.DefinePlugin({
__BASENAME__: process.env.BASENAME_ENV || '"/"',
__COMPONENT_PROPS__: JSON.stringify(generateComponentProps()),
__DEVELOPMENT__: false,
'process.env': {
NODE_ENV: JSON.stringify('production'),
},
}),
new webpack.optimize.UglifyJsPlugin({
mangle: {
keep_fnames: true,
},
}),
],
resolve: {
alias: {
'bw-axiom': path.resolve(__dirname, 'src'),
'style-guide': path.resolve(__dirname, 'style-guide/components'),
},
},
};