You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
1.6 KiB

  1. /**
  2. * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
  3. * SPDX-License-Identifier: AGPL-3.0-or-later
  4. */
  5. const BabelLoaderExcludeNodeModulesExcept = require('babel-loader-exclude-node-modules-except')
  6. const { mergeWithRules } = require('webpack-merge')
  7. const nextcloudWebpackRules = require('@nextcloud/webpack-vue-config/rules')
  8. // Replace rules with the same modules
  9. module.exports = mergeWithRules({
  10. module: {
  11. rules: {
  12. test: 'match',
  13. loader: 'replace',
  14. options: 'replace',
  15. use: 'replace',
  16. },
  17. },
  18. })({
  19. module: {
  20. // Reuse @nextcloud/webpack-vue-config/rules
  21. rules: Object.values(nextcloudWebpackRules),
  22. },
  23. },
  24. {
  25. module: {
  26. rules: [
  27. {
  28. test: /\.js$/,
  29. loader: 'esbuild-loader',
  30. options: {
  31. // Implicitly set as JS loader for only JS parts of Vue SFCs will be transpiled
  32. loader: 'js',
  33. target: 'es2020',
  34. },
  35. exclude: BabelLoaderExcludeNodeModulesExcept([
  36. '@nextcloud/event-bus',
  37. 'ansi-regex',
  38. 'fast-xml-parser',
  39. 'hot-patcher',
  40. 'nextcloud-vue-collections',
  41. 'semver',
  42. 'strip-ansi',
  43. 'tributejs',
  44. 'webdav',
  45. ]),
  46. },
  47. {
  48. test: /\.tsx?$/,
  49. use: [{
  50. loader: 'esbuild-loader',
  51. options: {
  52. // Implicitly set as TS loader so only <script lang="ts"> Vue SFCs will be transpiled
  53. loader: 'ts',
  54. target: 'es2020',
  55. },
  56. }]
  57. },
  58. {
  59. test: /\.wasm$/i,
  60. type: 'asset/resource',
  61. },
  62. {
  63. test: /\.tflite$/i,
  64. type: 'asset/resource',
  65. },
  66. {
  67. test: /\.worker\.js$/,
  68. use: { loader: 'worker-loader' },
  69. },
  70. {
  71. resourceQuery: /raw/,
  72. type: 'asset/source',
  73. }
  74. ],
  75. },
  76. })