-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.base.config.js
104 lines (92 loc) · 2.42 KB
/
webpack.base.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
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');
const _ = require('lodash');
const NODE_ENV = process.env.NODE_ENV || 'development';
const isProduction = process.env.NODE_ENV === 'production';
const env = {
production: NODE_ENV === 'production',
staging: NODE_ENV === 'staging',
test: NODE_ENV === 'test',
development: NODE_ENV === 'development' || typeof NODE_ENV === 'undefined',
};
_.assign(env, {
build: env.production || env.staging,
});
module.exports = {
target: 'web',
entry: {
main: ['./src/lazysizesEntry.ts', './src/application.tsx'],
},
output: {
path: path.join(__dirname),
publicPath: '/',
filename: 'application.[name].js',
chunkFilename: '[name].[id].js',
},
resolve: {
modules: ['web_modules', 'node_modules', './src/images'],
moduleExtensions: ['js', 'svg', 'tsx'],
extensions: ['.tsx', '.ts', '.js', '.svg'],
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: `'${NODE_ENV}'`,
},
__DEV__: env.development,
__STAGING__: env.staging,
__PRODUCTION__: env.production,
__CURRENT_ENV__: `\\${NODE_ENV}\\`,
}),
new HtmlWebpackPlugin({
title: 'Loading - Jetpath',
template: './src/entry.ejs',
inject: false,
}),
new HtmlWebpackPlugin({
title: 'Loading - Jetpath',
template: './src/entry.ejs',
inject: false,
filename: '200.html',
}),
new webpack.IgnorePlugin(/unicode\/category\/So/),
],
module: {
rules: [
// { test: /react\-select\.css$/, loader: 'style!css' },
{
test: /\.css$/,
use: [
{loader: "style-loader"},
{loader: "css-loader", options:{
modules:true,
localIdentName:'[path][name]__[local]--[hash:base64:5]',
},},
{loader: "postcss-loader"},
],
exclude: /node_modules|utils/,
},
{
test: /\.graphql$/,
exclude: /node_modules/,
use: 'graphql-tag/loader',
},
{
test: /\.ts(x?)$/,
exclude: /node_modules/,
use: 'awesome-typescript-loader?useBabel',
},
{
test: /\.svg$/,
use: [
'babel-loader',
{
loader: '@svgr/webpack',
},
]
},
// { test: /\.svg$/, loader: 'file-loader' },
],
},
};