forked from jekyll/jekyll-admin
-
Notifications
You must be signed in to change notification settings - Fork 15
/
webpack.config.prod.js
50 lines (48 loc) · 2.01 KB
/
webpack.config.prod.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
import webpack from 'webpack';
import path from 'path';
import MiniCssExtractPlugin from 'mini-css-extract-plugin';
import MomentLocalesPlugin from 'moment-locales-webpack-plugin';
import { ADMIN_PREFIX } from './src/constants';
const GLOBALS = {
'process.env.NODE_ENV': JSON.stringify('production'),
__DEV__: false,
};
export default {
mode: 'production',
node: { fs: 'empty' },
devtool: 'cheap-module-source-map',
entry: './src/index', // Default entry with Webpack v4. Keeping it for explicitness.
target: 'web',
output: {
path: `${__dirname}/lib/jekyll-admin/public`,
publicPath: `${ADMIN_PREFIX}/`,
filename: 'bundle.js',
},
plugins: [
new webpack.DefinePlugin(GLOBALS),
new MiniCssExtractPlugin({ filename: 'styles.css' }),
new webpack.LoaderOptionsPlugin({
minimize: true,
debug: false,
noInfo: true,
options: {
context: '/',
},
}),
// Strip all moment.js locales except "en" ("en" is built into Moment and can't be removed)
// Refer https://github.com/iamakulov/moment-locales-webpack-plugin for options that can be passed
new MomentLocalesPlugin(),
],
module: {
rules: [
{test: /\.js$/, include: path.join(__dirname, 'src'), loaders: ['babel-loader']},
{test: /\.eot(\?v=\d+.\d+.\d+)?$/, loader: 'file-loader?name=fonts/[name].[ext]?[hash:6]'},
{test: /\.(woff|woff2)(\?.*$|$)/, loader: 'file-loader?name=fonts/[name].[ext]?[hash:6]&prefix=font/&limit=30000'},
{test: /\.ttf(\?v=\d+.\d+.\d+)?$/, loader: 'file-loader?name=fonts/[name].[ext]?[hash:6]&limit=10000&mimetype=application/octet-stream'},
{test: /\.svg(\?v=\d+.\d+.\d+)?$/, loader: 'file-loader?name=images/[name].[ext]?[hash:6]&limit=10000&mimetype=image/svg+xml'},
{test: /\.(jpe?g|png|gif)$/i, loaders: ['file-loader?name=images/[name].[ext]?[hash:6]']},
{test: /\.ico$/, loader: 'file-loader?name=[name].[ext]'},
{test: /(\.css|\.scss)$/, use: [{ loader: MiniCssExtractPlugin.loader }, 'css-loader', 'sass-loader']},
],
},
};