-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.common.js
79 lines (77 loc) · 2.75 KB
/
webpack.common.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
const path = require("path");
const fs = require("fs");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
const CopyWebpackPlugin = require('copy-webpack-plugin');
// App directory
const appDirectory = fs.realpathSync(process.cwd());
module.exports = {
entry: path.resolve(appDirectory, "src/index.ts"),
output: {
filename: "js/babylonBundle.js",
path: path.resolve("./dist/"),
},
resolve: {
extensions: [".ts", ".js"],
fallback: {
fs: false,
path: false, // require.resolve("path-browserify")
},
},
module: {
rules: [
{
test: /\.m?js/,
},
{
test: /\.(js|mjs|jsx|ts|tsx)$/,
loader: "source-map-loader",
enforce: "pre",
},
{
test: /\.tsx?$/,
loader: "ts-loader",
// sideEffects: true
},
{
test: /\.css$/,
use: [
{ loader: 'style-loader' },
{ loader: 'css-loader' },
],
},
{
test: /\.(glb|gltf|babylon|manifest|png|jpg|csv|env|wav|mp3|dds|ply|splat)$/i,
use: [
{
loader: "file-loader",
options: {
// FIXME: would be better to have regural hashed file names and then somehow get manifest also included and have the same names
// To make caching work by having manifest files the assets need to have original names instead of hashed ones
// name: '[path][name].[ext]',
name: '[name].[ext]',
},
},
],
// When using the old assets loaders (i.e. file-loader/url-loader/raw-loader) along with Asset Module in webpack 5, you might want to stop Asset Module from processing your assets again as that would result in asset duplication. This can be done by setting asset's module type to 'javascript/auto'.
// type: 'javascript/auto'
},
{
test: /\.txt$/,
use: 'raw-loader'
}
],
},
plugins: [
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
inject: true,
template: path.resolve(appDirectory, "public/index.html"),
}),
new CopyWebpackPlugin({
patterns: [
{ from: path.resolve(appDirectory, "public/favicon.ico"), to: path.resolve("./dist/") }
]
}),
],
};