rspack.nodeps.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. const { rspack } = require('@rspack/core');
  2. const path = require('path');
  3. const { merge } = require('webpack-merge');
  4. const common = require('../rspack/rspack.common.js');
  5. module.exports = merge(common, {
  6. mode: 'production',
  7. optimization: {
  8. minimize: false,
  9. },
  10. entry: {
  11. 'converse-no-dependencies': path.resolve(__dirname, '../src/entry.js'),
  12. },
  13. plugins: [
  14. new rspack.CssExtractRspackPlugin({ filename: 'tmp.css' }),
  15. new rspack.DefinePlugin({
  16. 'process.env.NODE_ENV': JSON.stringify('production'),
  17. }),
  18. ],
  19. module: {
  20. rules: [
  21. {
  22. test: /\.js$/,
  23. include: /src/,
  24. use: {
  25. loader: 'builtin:swc-loader',
  26. options: {
  27. jsc: {
  28. target: 'es5',
  29. preserveAllComments: true,
  30. parser: {
  31. syntax: 'ecmascript',
  32. dynamicImport: false,
  33. decorators: false,
  34. },
  35. },
  36. },
  37. },
  38. },
  39. {
  40. test: /\.scss$/,
  41. use: [
  42. rspack.CssExtractRspackPlugin.loader,
  43. 'css-loader',
  44. {
  45. loader: 'sass-loader',
  46. options: {
  47. api: 'modern-compiler',
  48. sassOptions: {
  49. silenceDeprecations: ['color-functions', 'global-builtin', 'import', 'mixed-decls'],
  50. includePaths: [path.resolve(__dirname, '../node_modules/')],
  51. },
  52. },
  53. },
  54. ],
  55. },
  56. ],
  57. },
  58. externals: [
  59. {
  60. '@converse/skeletor': 'skeletor',
  61. 'filesize': 'filesize',
  62. 'jed': 'jed',
  63. 'lit': 'lit',
  64. 'lit-html': 'lit-html',
  65. 'localforage': 'localforage',
  66. 'lodash': 'lodash',
  67. 'lodash.noconflict': 'lodash.noconflict',
  68. 'pluggable.js': 'pluggable',
  69. 'sizzle': 'sizzle',
  70. 'strophe.js': 'strophe',
  71. 'urijs': 'urijs',
  72. 'window': 'window',
  73. },
  74. ],
  75. });