-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwebpack.config.dev.js
More file actions
127 lines (126 loc) · 4.57 KB
/
webpack.config.dev.js
File metadata and controls
127 lines (126 loc) · 4.57 KB
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
123
124
125
126
127
//const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm
const webpack = require('webpack'); //to access built-in plugins
const CopyWebpackPlugin = require('copy-webpack-plugin');
const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");
const devMode = process.env.NODE_ENV !== 'production';
module.exports = {
optimization: {
minimizer: [
new UglifyJsPlugin({
cache : true,
parallel : true,
sourceMap: devMode
}),
new OptimizeCSSAssetsPlugin({})
]
},
"mode": devMode ? "development" : "production",
"node" : { "fs": "empty", "net": "empty", "tls": "empty" },
"entry": {
"bundle": "./src/js/index.js",
"firebase-messaging-sw": "./src/js/firebase-messaging-sw.js"
},
"output": {
"path": __dirname+'/www',
"filename": "[name].js"
},
"devtool": devMode ? "source-map" : false,
"watch": true,
"module": {
"rules": [
// {
// "enforce": "pre",
// "test": /\.(js|jsx)$/,
// "exclude": /node_modules/,
// "use": "babel-loader"
// },
{
"test": /\.js$/,
"exclude": /node_modules/,
"use": {
"loader": "babel-loader",
"options": {
"presets": [
"env",
"react",
"stage-0"
],
"plugins": [
"transform-decorators-legacy"
]
}
}
},
// {
// "test": /\.s?css$/,
// "use": [
// devMode ? 'style-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]' : MiniCssExtractPlugin.loader,
// "css-loader?modules&importLoaders=1",
// "sass-loader"
// ],
// // "loader": "style-loader!css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]"
// },
{
"test": /\.s?css$/,
"exclude": /(src\/js)/,
"use": [
devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
"css-loader",
"sass-loader"
],
},
{
"test": /src\/js\/components\/.+\.s?css$/,
"use": [
devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
"css-loader?modules&camelCase",
"sass-loader"
],
},
{
"test": /src\/js\/pages\/.+\.s?css$/,
"use": [
devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
"css-loader?modules&camelCase",
"sass-loader"
],
},
{
test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
use: [{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'fonts/'
}
}]
},
{
test: /\.(gif|svg|jpg|png)$/,
loader: "file-loader",
}
]
},
"externals": ["ws"],
"plugins": [
new CopyWebpackPlugin([
{ from: './*.html', context: './src/' },
{ from: './img/*', context: './src' },
{ from: './img/*', context: './src/scss' },
{ from: './**/*', context: './src/scss/img', to: 'img' },
{ from: './manifest.json', context: './src' },
{ from: './hello.js', context: './node_modules/hellojs/dist' },
{ from: './google-services.json', context: './src' },
{ from: './GoogleService-Info.plist', context: './src' },
{ from: './framework7.min.js.map', context: './node_modules/framework7/dist/js' },
]),
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// both options are optional
filename: 'bundle.css',
chunkFilename: '[id].css',
})
]
};