diff --git a/apps/client/webpack.config.cjs b/apps/client/webpack.config.cjs index 53d143f13..ad5b99274 100644 --- a/apps/client/webpack.config.cjs +++ b/apps/client/webpack.config.cjs @@ -1,80 +1,83 @@ -const { NxAppWebpackPlugin } = require('@nx/webpack/app-plugin'); +const { composePlugins, withNx, withWeb } = require('@nx/webpack'); const { join } = require('path'); -module.exports = { - output: { - path: join(__dirname, 'dist'), - }, - devServer: { - port: 4200, - client: { - overlay: { - errors: true, - warnings: false, - runtimeErrors: true - } - } - }, - plugins: [ - new NxAppWebpackPlugin({ - tsConfig: './tsconfig.app.json', - compiler: 'swc', - main: "./src/index.ts", - additionalEntryPoints: [ - { - entryName: "desktop", - entryPath: "./src/desktop.ts" - }, - { - entryName: "mobile", - entryPath: "./src/mobile.ts" - }, - { - entryName: "login", - entryPath: "./src/login.ts" - }, - { - entryName: "setup", - entryPath: "./src/setup.ts" - }, - { - entryName: "share", - entryPath: "./src/share.ts" - }, - { - // TriliumNextTODO: integrate set_password into setup entry point/view - entryName: "set_password", - entryPath: "./src/set_password.ts" - } - ], - externalDependencies: [ - "electron" - ], - baseHref: '/', - assets: [ - "./src/assets", - "./src/stylesheets", - "./src/libraries", - "./src/fonts", - "./src/translations" - ], - styles: [], - stylePreprocessorOptions: { - sassOptions: { - quietDeps: true - } +module.exports = composePlugins( + withNx({ + tsConfig: join(__dirname, './tsconfig.app.json'), + compiler: "tsc", + main: join(__dirname, "./src/index.ts"), + additionalEntryPoints: [ + { + entryName: "desktop", + entryPath: join(__dirname, "./src/desktop.ts") }, - outputHashing: false, - optimization: process.env['NODE_ENV'] === 'production', - }) - ], - resolve: { - fallback: { - path: false, - fs: false, - util: false - } - } -}; + { + entryName: "mobile", + entryPath: join(__dirname, "./src/mobile.ts") + }, + { + entryName: "login", + entryPath: join(__dirname, "./src/login.ts") + }, + { + entryName: "setup", + entryPath: join(__dirname, "./src/setup.ts") + }, + { + entryName: "share", + entryPath: join(__dirname, "./src/share.ts") + }, + { + // TriliumNextTODO: integrate set_password into setup entry point/view + entryName: "set_password", + entryPath: join(__dirname, "./src/set_password.ts") + } + ], + externalDependencies: [ + "electron" + ], + baseHref: '/', + assets: [ + join(__dirname, "./src/assets"), + join(__dirname, "./src/stylesheets"), + join(__dirname, "./src/libraries"), + join(__dirname, "./src/fonts"), + join(__dirname, "./src/translations") + ], + outputHashing: false, + optimization: process.env['NODE_ENV'] === 'production' + }), + withWeb({ + styles: [], + stylePreprocessorOptions: { + sassOptions: { + quietDeps: true + } + }, + }), + (config) => { + config.output = { + path: join(__dirname, 'dist') + }; + config.devServer = { + port: 4200, + client: { + overlay: { + errors: true, + warnings: false, + runtimeErrors: true + } + } + } + + config.resolve.fallback = { + path: false, + fs: false, + util: false + }; + + return config; + } +); \ No newline at end of file