const { join } = require('path') const Encore = require('@symfony/webpack-encore') /* |-------------------------------------------------------------------------- | Encore runtime environment |-------------------------------------------------------------------------- */ if (!Encore.isRuntimeEnvironmentConfigured()) { Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev') } /* |-------------------------------------------------------------------------- | Output path |-------------------------------------------------------------------------- | | The output path for writing the compiled files. It should always | be inside the public directory, so that AdonisJS can serve it. | */ Encore.setOutputPath('./inertia/ssr') /* |-------------------------------------------------------------------------- | Public URI |-------------------------------------------------------------------------- | | The public URI to access the static files. It should always be | relative from the "public" directory. | */ Encore.setPublicPath('/ssr') /* |-------------------------------------------------------------------------- | Entrypoints |-------------------------------------------------------------------------- | | Entrypoints are script files that boots your frontend application. Ideally | a single entrypoint is used by majority of applications. However, feel | free to add more (if required). | | Also, make sure to read the docs on "Assets bundler" to learn more about | entrypoints. | */ Encore.addEntry('ssr', './resources/js/ssr.js') /* |-------------------------------------------------------------------------- | Isolated entrypoints |-------------------------------------------------------------------------- | | Treat each entry point and its dependencies as its own isolated module. | */ Encore.disableSingleRuntimeChunk() /* |-------------------------------------------------------------------------- | Cleanup output folder |-------------------------------------------------------------------------- | | It is always nice to cleanup the build output before creating a build. It | will ensure that all unused files from the previous build are removed. | */ Encore.cleanupOutputBeforeBuild() /* |-------------------------------------------------------------------------- | Assets versioning |-------------------------------------------------------------------------- | | Enable assets versioning to leverage lifetime browser and CDN cache | */ Encore.enableVersioning(Encore.isProduction()) /* |-------------------------------------------------------------------------- | Configure dev server |-------------------------------------------------------------------------- | | Here we configure the dev server to enable live reloading for edge templates. | Remember edge templates are not processed by Webpack and hence we need | to watch them explicitly and livereload the browser. | */ Encore.configureDevServerOptions((options) => { /** * Normalize "options.static" property to an array */ if (!options.static) { options.static = [] } else if (!Array.isArray(options.static)) { options.static = [options.static] } /** * Enable live reload and add views directory */ options.liveReload = true options.static.push({ directory: join(__dirname, './resources/views'), watch: true, }) }) /* |-------------------------------------------------------------------------- | CSS precompilers support |-------------------------------------------------------------------------- | | Uncomment one of the following lines of code to enable support for your | favorite CSS precompiler | */ // Encore.enableSassLoader() // Encore.enableLessLoader() // Encore.enableStylusLoader() /* |-------------------------------------------------------------------------- | CSS loaders |-------------------------------------------------------------------------- | | Uncomment one of the following line of code to enable support for | PostCSS or CSS. | */ // Encore.enablePostCssLoader() // Encore.configureCssLoader(() => {}) /* |-------------------------------------------------------------------------- | Enable Vue loader |-------------------------------------------------------------------------- | | Uncomment the following lines of code to enable support for vue. Also make | sure to install the required dependencies. | */ // Encore.enableVueLoader(() => {}, { // version: 3, // runtimeCompilerBuild: false, // useJsx: false, // }) /* |-------------------------------------------------------------------------- | Configure logging |-------------------------------------------------------------------------- | | To keep the terminal clean from unnecessary info statements , we only | log warnings and errors. If you want all the logs, you can change | the level to "info". | */ const config = Encore.getWebpackConfig() config.infrastructureLogging = { level: 'warn', } config.stats = 'errors-warnings' /* |-------------------------------------------------------------------------- | SSR Config |-------------------------------------------------------------------------- | */ config.externals = [require('webpack-node-externals')()] config.externalsPresets = { node: true } config.output = { libraryTarget: 'commonjs2', filename: 'ssr.js', path: join(__dirname, './inertia/ssr'), } config.experiments = { outputModule: true } /* |-------------------------------------------------------------------------- | Export config |-------------------------------------------------------------------------- | | Export config for webpack to do its job | */ module.exports = config