forked from sle118/squeezelite-esp32-installer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
129 lines (118 loc) · 2.84 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
import Dotenv from "dotenv-webpack"
import path from "path"
import MiniCssExtractPlugin from "mini-css-extract-plugin"
import HtmlWebpackPlugin from "html-webpack-plugin"
import webpack from 'webpack'
// import CopyPlugin from "copy-webpack-plugin"
export default {
// Define the entry points of our application (can be multiple for different sections of a website)
entry: {
main: "./src/js/main.js",
},
// Define the destination directory and filenames of compiled resources
output: {
filename: "js/[name].js",
path: path.resolve(process.cwd(), "./docs"),
},
// Define development options
devtool: "source-map",
// Define loaders
module: {
rules: [
// Use babel for JS files
{
test: /\.js$/,
exclude: /(node_modules)/,
use: {
loader: "babel-loader",
options: {
presets: [
"@babel/preset-env"
]
}
}
},
{
test: /\.(woff|woff2|eot|ttf|svg)$/,
loader: 'file-loader',
options: { name: '[name].[ext]', outputPath: 'fonts/', }
},
// CSS, PostCSS, and Sass
{
test: /\.(scss|css)$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: "css-loader",
options: {
importLoaders: 2,
sourceMap: true,
url: false,
}
},
{
loader: "postcss-loader",
options: {
postcssOptions: {
plugins: [
"autoprefixer",
]
}
}
},
"sass-loader"
],
},
// File loader for images
{
test: /\.(jpg|jpeg|png|git|svg)$/i,
type: "asset/resource",
}
]
},
// Define used plugins
plugins: [
// Load .env file for environment variables in JS
new Dotenv({
path: "./.env"
}),
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
}),
// Extracts CSS into separate files
new MiniCssExtractPlugin({
filename: "css/[name].css",
chunkFilename: "[id].css"
}),
// // Copy images to the public folder
// new CopyPlugin({
// patterns: [
// {
// from: "src/images",
// to: "images",
// }
// ]
// }),
// Inject styles and scripts into the HTML
new HtmlWebpackPlugin({
template: path.resolve(process.cwd(), "index.html")
})
],
// Configure the "webpack-dev-server" plugin
devServer: {
static: {
directory: path.resolve(process.cwd(), "docs")
},
watchFiles: [
path.resolve(process.cwd(), "index.html")
],
compress: true,
port: process.env.PORT || 9090,
hot: true,
},
// Performance configuration
performance: {
hints: false
}
};