-
Notifications
You must be signed in to change notification settings - Fork 3
/
webpack.config.js
132 lines (130 loc) · 3.79 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
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
128
129
130
131
132
"use strict";
const path = require('path');
const minimist = require('minimist');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
var argv = minimist(process.argv.slice(2));
const isWeb = (argv && argv.target === 'web');
const target = (isWeb ? 'web' : 'electron-renderer');
// DONTODO add to entry?
// 'react-hot-loader/patch',
// 'webpack-dev-server/client?http://localhost:3000',
// 'webpack/hot/only-dev-server',
const entry = (isWeb ? { site: "./src/site/app/app.tsx" } : { electron: "./src/renderer/app/app.tsx" } );
const htmlWebpackPlugin = (isWeb ?
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'src/site/app/index.html',
inject: false
})
:
new HtmlWebpackPlugin({
filename: 'electron.html',
template: 'src/renderer/app/electron.html',
inject: false
})
);
module.exports = {
devtool: "source-map",
entry: entry,
target: target,
output: {
filename: "[name].js",
path: path.resolve(__dirname, 'dist'),
},
node: {
__dirname: false, // webpack should not override the value of __dirname (see https:/electron/electron/issues/5107#issuecomment-299971806)
},
devServer: {
contentBase: path.join(__dirname, "dist"),
open: true,
host: 'localhost',
port: 3000,
historyApiFallback: true,
hot: true,
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('development')
}
}),
htmlWebpackPlugin
],
resolve: {
extensions: [
'.css',
'.scss',
'.tsx',
'.jsx',
'.ts',
'.js',
'.json'
]
},
module: {
rules: [
{
// All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'.
enforce: "pre",
test: /\.js$/,
loader: "source-map-loader"
},
{
test: /\.ts$/,
enforce: 'pre',
loader: 'tslint-loader',
options: {
typeCheck: true,
emitErrors: true
}
},
{
test: /\.tsx?$/,
loader: "awesome-typescript-loader"
},
{
test: /\.scss$/,
use: [
{
loader: "style-loader"
},
{
loader: "typings-for-css-modules-loader",
options: {
namedExport: true,
camelCase: true,
modules: true
}
},
{
loader: "sass-loader"
}
]
},
{
test: /\.css$/,
use: [
{ loader: 'style-loader' },
{
loader: 'typings-for-css-modules-loader',
options: {
namedExport: true,
camelCase: true,
modules: true
}
}
]
},
{
test: /\.(png|jpg|gif|svg)(\?\S*)?$/,
exclude: /node_modules/,
loader: 'file-loader',
options: {}
}
],
}
};