Created
January 26, 2025 06:06
-
-
Save binarykitchen/39de7e07fc000a5ec9c60666fa939e4b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| export default { | |
| target: [ | |
| 'web', | |
| 'es2017' | |
| ], | |
| name: 'client', | |
| devtool: 'cheap-module-source-map', | |
| context: '/home/michael-heuberger/code/binarykitchen/videomail.io', | |
| mode: 'development', | |
| infrastructureLogging: { | |
| level: 'error' | |
| }, | |
| watchOptions: { | |
| ignored: /[\\/](?:\.git|node_modules)[\\/]/, | |
| aggregateTimeout: 0 | |
| }, | |
| experiments: { | |
| asyncWebAssembly: true | |
| }, | |
| output: { | |
| devtoolModuleFilenameTemplate: (info)=>toPosixPath(__WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__.default.resolve(info.absoluteResourcePath)), | |
| path: '/home/michael-heuberger/code/binarykitchen/videomail.io/var/local/www', | |
| filename: 'static/js/[name].js', | |
| chunkFilename: 'static/js/async/[name].js', | |
| publicPath: '/', | |
| pathinfo: false, | |
| hashFunction: 'xxhash64', | |
| assetModuleFilename: 'static/assets/[name].[contenthash:8][ext]', | |
| webassemblyModuleFilename: 'static/wasm/[hash].module.wasm' | |
| }, | |
| resolve: { | |
| tsConfig: { | |
| configFile: '/home/michael-heuberger/code/binarykitchen/videomail.io/tsconfig.json', | |
| references: 'auto' | |
| }, | |
| alias: { | |
| '@swc/helpers': '/home/michael-heuberger/code/binarykitchen/videomail.io/node_modules/@swc/helpers' | |
| }, | |
| extensionAlias: { | |
| '.js': [ | |
| '.js', | |
| '.ts', | |
| '.tsx' | |
| ], | |
| '.jsx': [ | |
| '.jsx', | |
| '.tsx' | |
| ] | |
| }, | |
| extensions: [ | |
| '.ts', | |
| '.tsx', | |
| '.mjs', | |
| '.js', | |
| '.jsx', | |
| '.json' | |
| ] | |
| }, | |
| module: { | |
| parser: { | |
| javascript: { | |
| exportsPresence: 'error' | |
| } | |
| }, | |
| rules: [ | |
| /* config.module.rule('mjs') */ | |
| { | |
| test: /\.m?js/, | |
| resolve: { | |
| fullySpecified: false | |
| } | |
| }, | |
| /* config.module.rule('css') */ | |
| { | |
| test: /\.css$/, | |
| type: 'javascript/auto', | |
| dependency: { | |
| not: 'url' | |
| }, | |
| sideEffects: true, | |
| use: [ | |
| /* config.module.rule('css').use('mini-css-extract') */ | |
| { | |
| loader: '/home/michael-heuberger/code/binarykitchen/videomail.io/node_modules/@rspack/core/dist/cssExtractLoader.js' | |
| }, | |
| /* config.module.rule('css').use('css') */ | |
| { | |
| loader: '/home/michael-heuberger/code/binarykitchen/videomail.io/node_modules/@rsbuild/core/compiled/css-loader/index.js', | |
| options: { | |
| importLoaders: 1, | |
| modules: { | |
| auto: true, | |
| namedExport: false, | |
| exportGlobals: false, | |
| exportLocalsConvention: 'camelCase', | |
| localIdentName: '[path][name]__[local]-[hash:base64:6]' | |
| }, | |
| sourceMap: false | |
| } | |
| }, | |
| /* config.module.rule('css').use('lightningcss') */ | |
| { | |
| loader: 'builtin:lightningcss-loader', | |
| options: { | |
| targets: [ | |
| 'chrome >= 87', | |
| 'edge >= 88', | |
| 'firefox >= 78', | |
| 'safari >= 14' | |
| ] | |
| } | |
| } | |
| ], | |
| resolve: { | |
| preferRelative: true | |
| } | |
| }, | |
| /* config.module.rule('js') */ | |
| { | |
| test: /\.(?:js|jsx|mjs|cjs|ts|tsx|mts|cts)$/, | |
| type: 'javascript/auto', | |
| dependency: { | |
| not: 'url' | |
| }, | |
| include: [ | |
| { | |
| and: [ | |
| '/home/michael-heuberger/code/binarykitchen/videomail.io', | |
| { | |
| not: /[\\/]node_modules[\\/]/ | |
| } | |
| ] | |
| }, | |
| /\.(?:ts|tsx|jsx|mts|cts)$/, | |
| /[\\/]@rsbuild[\\/]core[\\/]dist[\\/]/ | |
| ], | |
| use: [ | |
| /* config.module.rule('js').use('swc') */ | |
| { | |
| loader: 'builtin:swc-loader', | |
| options: { | |
| jsc: { | |
| externalHelpers: true, | |
| parser: { | |
| tsx: false, | |
| syntax: 'typescript', | |
| decorators: true | |
| }, | |
| experimental: { | |
| cacheRoot: '/home/michael-heuberger/code/binarykitchen/videomail.io/node_modules/.cache/.swc', | |
| keepImportAttributes: true | |
| }, | |
| transform: { | |
| legacyDecorator: false, | |
| decoratorVersion: '2022-03' | |
| } | |
| }, | |
| isModule: 'unknown', | |
| env: { | |
| targets: [ | |
| 'chrome >= 87', | |
| 'edge >= 88', | |
| 'firefox >= 78', | |
| 'safari >= 14' | |
| ], | |
| mode: undefined | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| /* config.module.rule('js-data-uri') */ | |
| { | |
| mimetype: { | |
| or: [ | |
| 'text/javascript', | |
| 'application/javascript' | |
| ] | |
| }, | |
| use: [ | |
| /* config.module.rule('js-data-uri').use('swc') */ | |
| { | |
| loader: 'builtin:swc-loader', | |
| options: { | |
| jsc: { | |
| externalHelpers: true, | |
| parser: { | |
| tsx: false, | |
| syntax: 'typescript', | |
| decorators: true | |
| }, | |
| experimental: { | |
| cacheRoot: '/home/michael-heuberger/code/binarykitchen/videomail.io/node_modules/.cache/.swc', | |
| keepImportAttributes: true | |
| }, | |
| transform: { | |
| legacyDecorator: false, | |
| decoratorVersion: '2022-03' | |
| } | |
| }, | |
| isModule: 'unknown', | |
| env: { | |
| targets: [ | |
| 'chrome >= 87', | |
| 'edge >= 88', | |
| 'firefox >= 78', | |
| 'safari >= 14' | |
| ], | |
| mode: undefined | |
| } | |
| } | |
| } | |
| ], | |
| resolve: { | |
| fullySpecified: false | |
| } | |
| }, | |
| /* config.module.rule('image') */ | |
| { | |
| test: /\.(?:png|jpg|jpeg|pjpeg|pjp|gif|bmp|webp|ico|apng|avif|tif|tiff|jfif|cur)$/i, | |
| oneOf: [ | |
| /* config.module.rule('image').oneOf('image-asset-url') */ | |
| { | |
| type: 'asset/resource', | |
| resourceQuery: /(__inline=false|url)/, | |
| generator: { | |
| filename: 'static/image/[name].[contenthash:8][ext]' | |
| } | |
| }, | |
| /* config.module.rule('image').oneOf('image-asset-inline') */ | |
| { | |
| type: 'asset/inline', | |
| resourceQuery: /inline/ | |
| }, | |
| /* config.module.rule('image').oneOf('image-asset') */ | |
| { | |
| type: 'asset', | |
| parser: { | |
| dataUrlCondition: { | |
| maxSize: 4096 | |
| } | |
| }, | |
| generator: { | |
| filename: 'static/image/[name].[contenthash:8][ext]' | |
| } | |
| } | |
| ] | |
| }, | |
| /* config.module.rule('svg') */ | |
| { | |
| test: /\.svg$/i, | |
| oneOf: [ | |
| /* config.module.rule('svg').oneOf('svg-asset-url') */ | |
| { | |
| type: 'asset/resource', | |
| resourceQuery: /(__inline=false|url)/, | |
| generator: { | |
| filename: 'static/svg/[name].[contenthash:8].svg' | |
| } | |
| }, | |
| /* config.module.rule('svg').oneOf('svg-asset-inline') */ | |
| { | |
| type: 'asset/inline', | |
| resourceQuery: /inline/ | |
| }, | |
| /* config.module.rule('svg').oneOf('svg-asset') */ | |
| { | |
| type: 'asset', | |
| parser: { | |
| dataUrlCondition: { | |
| maxSize: 4096 | |
| } | |
| }, | |
| generator: { | |
| filename: 'static/svg/[name].[contenthash:8].svg' | |
| } | |
| } | |
| ] | |
| }, | |
| /* config.module.rule('media') */ | |
| { | |
| test: /\.(?:mp4|webm|ogg|mov|mp3|wav|flac|aac|m4a|opus)$/i, | |
| oneOf: [ | |
| /* config.module.rule('media').oneOf('media-asset-url') */ | |
| { | |
| type: 'asset/resource', | |
| resourceQuery: /(__inline=false|url)/, | |
| generator: { | |
| filename: 'static/media/[name].[contenthash:8][ext]' | |
| } | |
| }, | |
| /* config.module.rule('media').oneOf('media-asset-inline') */ | |
| { | |
| type: 'asset/inline', | |
| resourceQuery: /inline/ | |
| }, | |
| /* config.module.rule('media').oneOf('media-asset') */ | |
| { | |
| type: 'asset', | |
| parser: { | |
| dataUrlCondition: { | |
| maxSize: 4096 | |
| } | |
| }, | |
| generator: { | |
| filename: 'static/media/[name].[contenthash:8][ext]' | |
| } | |
| } | |
| ] | |
| }, | |
| /* config.module.rule('font') */ | |
| { | |
| test: /\.(?:woff|woff2|eot|ttf|otf|ttc)$/i, | |
| oneOf: [ | |
| /* config.module.rule('font').oneOf('font-asset-url') */ | |
| { | |
| type: 'asset/resource', | |
| resourceQuery: /(__inline=false|url)/, | |
| generator: { | |
| filename: 'static/font/[name].[contenthash:8][ext]' | |
| } | |
| }, | |
| /* config.module.rule('font').oneOf('font-asset-inline') */ | |
| { | |
| type: 'asset/inline', | |
| resourceQuery: /inline/ | |
| }, | |
| /* config.module.rule('font').oneOf('font-asset') */ | |
| { | |
| type: 'asset', | |
| parser: { | |
| dataUrlCondition: { | |
| maxSize: 4096 | |
| } | |
| }, | |
| generator: { | |
| filename: 'static/font/[name].[contenthash:8][ext]' | |
| } | |
| } | |
| ] | |
| }, | |
| /* config.module.rule('wasm') */ | |
| { | |
| test: /\.wasm$/, | |
| dependency: 'url', | |
| type: 'asset/resource', | |
| generator: { | |
| filename: 'static/wasm/[hash].module.wasm' | |
| } | |
| } | |
| ] | |
| }, | |
| optimization: { | |
| minimize: false, | |
| splitChunks: { | |
| chunks: 'all', | |
| cacheGroups: { | |
| 'lib-axios': { | |
| test: /node_modules[\\/]axios(-.+)?[\\/]/, | |
| priority: 0, | |
| name: 'lib-axios' | |
| } | |
| } | |
| } | |
| }, | |
| plugins: [ | |
| /* config.plugin('RsbuildCorePlugin') */ | |
| {}, | |
| /* config.plugin('hmr') */ | |
| new HotModuleReplacementPlugin(), | |
| /* config.plugin('mini-css-extract') */ | |
| new CssExtractRspackPlugin( | |
| { | |
| filename: 'static/css/[name].css', | |
| chunkFilename: 'static/css/async/[name].css', | |
| ignoreOrder: true | |
| } | |
| ), | |
| /* config.plugin('html-index') */ | |
| new HtmlRspackPlugin( | |
| { | |
| meta: { | |
| charset: { | |
| charset: 'UTF-8' | |
| }, | |
| viewport: 'width=device-width,initial-scale=1', | |
| 'apple-mobile-web-app-status-bar-style': '#bbb', | |
| author: 'Michael Heuberger, Binary Kitchen', | |
| 'msapplication-navbutton-color': '#bbb', | |
| 'theme-color': '#bbb' | |
| }, | |
| chunks: [ | |
| 'index' | |
| ], | |
| inject: 'head', | |
| filename: 'index.html', | |
| entryName: 'index', | |
| templateParameters: (compilation, assets, assetTags, pluginOptions)=>{ | |
| let { mountId, templateParameters } = config.html, rspackConfig = compilation.options, htmlPlugin = { | |
| tags: assetTags, | |
| files: assets, | |
| options: pluginOptions | |
| }; | |
| return reduceConfigsWithContext({ | |
| initial: { | |
| mountId, | |
| entryName: entryName, | |
| assetPrefix: assetPrefix, | |
| compilation, | |
| htmlPlugin, | |
| rspackConfig, | |
| webpackConfig: rspackConfig, | |
| htmlWebpackPlugin: htmlPlugin | |
| }, | |
| config: templateParameters, | |
| ctx: { | |
| entryName: entryName | |
| } | |
| }); | |
| }, | |
| scriptLoading: 'defer', | |
| template: '/home/michael-heuberger/code/binarykitchen/videomail.io/src/client/views/base.pug', | |
| title: 'videomail.io' | |
| } | |
| ), | |
| /* config.plugin('rsbuild-html-plugin') */ | |
| new RsbuildHtmlPlugin( | |
| { | |
| index: { | |
| templateContent: 'doctype html\nhtml(lang="en", data-environ=environ)\n head\n base(href="/")\n\n link(rel="dns-prefetch", href=developerUrl)\n link(rel="me", href=developerUrl)\n\n link(rel="preconnect", href="https://fonts.googleapis.com")\n link(rel="preconnect", href="https://fonts.gstatic.com", crossorigin)\n\n link(\n href="https://fonts.googleapis.com/css?family=Varela+Round&display=swap",\n rel="stylesheet",\n type="text/css"\n )\n\n meta(http-equiv="Cache-control", content="no-cache, no-store, must-revalidate")\n meta(http-equiv="Pragma", content="no-cache")\n meta(http-equiv="expires", content="-1")\n\n meta(name="robots", content="index,follow")\n meta(name="language", content="en")\n meta(name="description", content=description)\n meta(name="keywords", content=keywords)\n meta(\n name="google-site-verification",\n content="(REMOVED)"\n )\n meta(name="mobile-web-app-capable", content="yes")\n meta(name="apple-mobile-web-app-title", content=title)\n meta(name="application-name", content=title)\n meta(name="color-scheme", content="light dark")\n\n meta(name="referrer", content="always")\n\n body\n #root\n', | |
| favicon: '/home/michael-heuberger/code/binarykitchen/videomail.io/src/client/assets/img/favicon.png' | |
| } | |
| }, | |
| ()=>environment, | |
| async (...args)=>(await context.hooks.modifyHTMLTags.callInEnvironment({ | |
| environment, | |
| args | |
| }))[0] | |
| ), | |
| /* config.plugin('define') */ | |
| new DefinePlugin( | |
| { | |
| 'import.meta.env.MODE': '"development"', | |
| 'import.meta.env.DEV': true, | |
| 'import.meta.env.PROD': false, | |
| 'import.meta.env.BASE_URL': '"/"', | |
| 'import.meta.env.ASSET_PREFIX': '""', | |
| 'process.env.BASE_URL': '"/"', | |
| 'process.env.ASSET_PREFIX': '""', | |
| 'process.env.ENVIRON': '"local"', | |
| 'process.env.VIDEOMAIL_OPTIONS': { | |
| apiUrl: '"https://infernal.videomail.local:8443"', | |
| clientUrl: '"https://infernal.videomail.local:8080"', | |
| expireSeconds: '5184000', | |
| imageQuality: '0.38', | |
| pageName: '"videomail.io"', | |
| rootEmail: '"[email protected]"', | |
| slogan: '"Email videos from your cam right away"', | |
| socketUrl: '"wss://infernal.videomail.local:8443"', | |
| title: '"videomail.io"', | |
| version: '"2.0.0"', | |
| videoFps: '18', | |
| videoHeight: '300', | |
| videoLimitSeconds: '180', | |
| videoWidth: '400', | |
| googleTagID: 'REMOVED' | |
| } | |
| } | |
| ) | |
| ], | |
| performance: { | |
| hints: false, | |
| maxAssetSize: 250000, | |
| maxEntrypointSize: 250000 | |
| }, | |
| entry: { | |
| index: [ | |
| '/home/michael-heuberger/code/binarykitchen/videomail.io/src/client/index.tsx' | |
| ] | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment