aboutsummaryrefslogtreecommitdiffstats
path: root/webpack.config.js
diff options
context:
space:
mode:
Diffstat (limited to 'webpack.config.js')
-rw-r--r--webpack.config.js213
1 files changed, 213 insertions, 0 deletions
diff --git a/webpack.config.js b/webpack.config.js
new file mode 100644
index 0000000..9743941
--- /dev/null
+++ b/webpack.config.js
@@ -0,0 +1,213 @@
1const { join } = require('node:path');
2const Encore = require('@symfony/webpack-encore');
3
4/*
5|--------------------------------------------------------------------------
6| Encore runtime environment
7|--------------------------------------------------------------------------
8*/
9if (!Encore.isRuntimeEnvironmentConfigured()) {
10 Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev');
11}
12
13/*
14|--------------------------------------------------------------------------
15| Output path
16|--------------------------------------------------------------------------
17|
18| The output path for writing the compiled files. It should always
19| be inside the public directory, so that AdonisJS can serve it.
20|
21*/
22Encore.setOutputPath('./public/assets');
23
24/*
25|--------------------------------------------------------------------------
26| Public URI
27|--------------------------------------------------------------------------
28|
29| The public URI to access the static files. It should always be
30| relative from the "public" directory.
31|
32*/
33Encore.setPublicPath('/assets');
34
35/*
36|--------------------------------------------------------------------------
37| Entrypoints
38|--------------------------------------------------------------------------
39|
40| Entrypoints are script files that boots your frontend application. Ideally
41| a single entrypoint is used by majority of applications. However, feel
42| free to add more (if required).
43|
44| Also, make sure to read the docs on "Assets bundler" to learn more about
45| entrypoints.
46|
47*/
48Encore.addEntry('app', './resources/js/app.js');
49
50/*
51|--------------------------------------------------------------------------
52| Copy assets
53|--------------------------------------------------------------------------
54|
55| Since the edge templates are not part of the Webpack compile lifecycle, any
56| images referenced by it will not be processed by Webpack automatically. Hence
57| we must copy them manually.
58|
59*/
60// Encore.copyFiles({
61// from: './resources/images',
62// to: 'images/[path][name].[hash:8].[ext]',
63// })
64
65/*
66|--------------------------------------------------------------------------
67| Split shared code
68|--------------------------------------------------------------------------
69|
70| Instead of bundling duplicate code in all the bundles, generate a separate
71| bundle for the shared code.
72|
73| https://symfony.com/doc/current/frontend/encore/split-chunks.html
74| https://webpack.js.org/plugins/split-chunks-plugin/
75|
76*/
77// Encore.splitEntryChunks()
78
79/*
80|--------------------------------------------------------------------------
81| Isolated entrypoints
82|--------------------------------------------------------------------------
83|
84| Treat each entry point and its dependencies as its own isolated module.
85|
86*/
87Encore.disableSingleRuntimeChunk();
88
89/*
90|--------------------------------------------------------------------------
91| Cleanup output folder
92|--------------------------------------------------------------------------
93|
94| It is always nice to cleanup the build output before creating a build. It
95| will ensure that all unused files from the previous build are removed.
96|
97*/
98Encore.cleanupOutputBeforeBuild();
99/*
100|--------------------------------------------------------------------------
101| Source maps
102|--------------------------------------------------------------------------
103|
104| Enable source maps in production
105|
106*/
107Encore.enableSourceMaps(!Encore.isProduction());
108
109/*
110|--------------------------------------------------------------------------
111| Assets versioning
112|--------------------------------------------------------------------------
113|
114| Enable assets versioning to leverage lifetime browser and CDN cache
115|
116*/
117Encore.enableVersioning(Encore.isProduction());
118
119/*
120|--------------------------------------------------------------------------
121| Configure dev server
122|--------------------------------------------------------------------------
123|
124| Here we configure the dev server to enable live reloading for edge templates.
125| Remember edge templates are not processed by Webpack and hence we need
126| to watch them explicitly and livereload the browser.
127|
128*/
129Encore.configureDevServerOptions(options => {
130 /**
131 * Normalize "options.static" property to an array
132 */
133 if (!options.static) {
134 options.static = [];
135 } else if (!Array.isArray(options.static)) {
136 options.static = [options.static];
137 }
138
139 /**
140 * Enable live reload and add views directory
141 */
142 options.liveReload = true;
143 options.static.push({
144 directory: join(__dirname, './resources/views'),
145 watch: true,
146 });
147});
148
149/*
150|--------------------------------------------------------------------------
151| CSS precompilers support
152|--------------------------------------------------------------------------
153|
154| Uncomment one of the following lines of code to enable support for your
155| favorite CSS precompiler
156|
157*/
158// Encore.enableSassLoader()
159// Encore.enableLessLoader()
160// Encore.enableStylusLoader()
161
162/*
163|--------------------------------------------------------------------------
164| CSS loaders
165|--------------------------------------------------------------------------
166|
167| Uncomment one of the following line of code to enable support for
168| PostCSS or CSS.
169|
170*/
171// Encore.enablePostCssLoader()
172// Encore.configureCssLoader(() => {})
173
174/*
175|--------------------------------------------------------------------------
176| Enable Vue loader
177|--------------------------------------------------------------------------
178|
179| Uncomment the following lines of code to enable support for vue. Also make
180| sure to install the required dependencies.
181|
182*/
183// Encore.enableVueLoader(() => {}, {
184// version: 3,
185// runtimeCompilerBuild: false,
186// useJsx: false
187// })
188
189/*
190|--------------------------------------------------------------------------
191| Configure logging
192|--------------------------------------------------------------------------
193|
194| To keep the terminal clean from unnecessary info statements , we only
195| log warnings and errors. If you want all the logs, you can change
196| the level to "info".
197|
198*/
199const config = Encore.getWebpackConfig();
200config.infrastructureLogging = {
201 level: 'warn',
202};
203config.stats = 'errors-warnings';
204
205/*
206|--------------------------------------------------------------------------
207| Export config
208|--------------------------------------------------------------------------
209|
210| Export config for webpack to do its job
211|
212*/
213module.exports = config;