This repository has been archived by the owner on Sep 25, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathwebpack.config.js
executable file
·86 lines (81 loc) · 2.85 KB
/
webpack.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
/*
* Copyright 2016 Adobe Systems Incorporated. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
* OF ANY KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*
*/
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ReactTwistPlugin = require('@twist/react-webpack-plugin');
const autoprefixer = require('autoprefixer');
const path = require('path');
const webpack = require('webpack');
const config = new ReactTwistPlugin();
if (process.env.NODE_ENV === 'test') {
config.addBabelPlugin('istanbul');
}
const isProduction = process.env.NODE_ENV === 'production';
module.exports = {
context: __dirname,
entry: './example/Main.jsx',
devServer: {
contentBase: path.join(__dirname, 'build'),
compress: true,
port: 9000
},
resolve: {
extensions: [ '.js', '.jsx' ]
},
output: {
path: path.join(__dirname, 'build'),
filename: '[name].js'
},
devtool: isProduction ? 'source-map' : 'cheap-module-eval-source-map',
module: {
rules: [ {
test: /\.css$/,
use: [ {
loader: 'style-loader'
}, {
loader: 'css-loader',
options: { sourceMap: true, importLoaders: 1 }
}, {
loader: 'postcss-loader',
options: { sourceMap: true, plugins: [ autoprefixer(config.getOption('targets')) ] }
} ]
}, {
test: /\.less$/,
use: [ {
loader: 'style-loader'
}, {
loader: 'css-loader',
options: { sourceMap: true, importLoaders: 1 }
}, {
loader: 'postcss-loader',
options: { sourceMap: true, plugins: [ autoprefixer(config.getOption('targets')) ] }
}, {
loader: 'less-loader',
options: { sourceMap: true }
} ]
}, {
test: /\.(gif|png|jpg|svg|eot|woff|woff2|ttf|mp4|cur)$/,
loader: 'file-loader'
} ]
},
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
}),
new webpack.ProvidePlugin({
'React': 'react',
}),
new webpack.optimize.UglifyJsPlugin({ sourceMap: !isProduction }),
config,
new HtmlWebpackPlugin({ title: 'sample-project' })
]
};