vite.config.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /**
  2. * CONFIG: https://vite.dev/config/
  3. */
  4. import { resolve } from "node:path";
  5. import { defineConfig } from "vite";
  6. import stylelint from "vite-plugin-stylelint";
  7. import { viteStaticCopy } from "vite-plugin-static-copy";
  8. const ROOT = "../.."; // root of the git reposetory
  9. const PATH = {
  10. dist: resolve(ROOT, "searx/static/themes/simple"),
  11. // dist: resolve(ROOT, "client/simple/dist"),
  12. src: "src",
  13. modules: "node_modules",
  14. brand: "src/brand",
  15. static: resolve(ROOT, "client/simple/static"),
  16. leaflet: resolve(ROOT, "client/simple/node_modules/leaflet/dist"),
  17. templates: resolve(ROOT, "searx/templates/simple"),
  18. };
  19. };
  20. export default defineConfig({
  21. root: PATH.src,
  22. mode: "production",
  23. // mode: "development",
  24. // FIXME: missing CCS sourcemaps!!
  25. // see: https://github.com/vitejs/vite/discussions/13845#discussioncomment-11992084
  26. //
  27. // what I have tried so far (see config below):
  28. //
  29. // - build.sourcemap
  30. // - esbuild.sourcemap
  31. // - css.preprocessorOptions.less.sourceMap
  32. css: {
  33. devSourcemap: true,
  34. preprocessorOptions: {
  35. less: {
  36. // FIXME: missing CCS sourcemaps!!
  37. sourceMap: {
  38. outputSourceFiles: true,
  39. sourceMapURL: (name) => { const s = name.split('/'); return s[s.length - 1] + '.map'; },
  40. },
  41. // env: 'development',
  42. // relativeUrls: true,
  43. // javascriptEnabled: true,
  44. },
  45. },
  46. }, // end: css
  47. esbuild : {
  48. // FIXME: missing CCS sourcemaps!!
  49. sourcemap: true
  50. },
  51. build: {
  52. manifest: "manifest.json",
  53. emptyOutDir: true,
  54. assetsDir: "",
  55. outDir: PATH.dist,
  56. // FIXME: missing CCS sourcemaps!!
  57. sourcemap: true,
  58. // https://vite.dev/config/build-options.html#build-cssminify
  59. cssMinify: true,
  60. // cssMinify: "esbuild",
  61. minify: "esbuild",
  62. rollupOptions: {
  63. input: {
  64. // build CSS files
  65. "css/searxng.min.css": PATH.src + "/less/style-ltr.less",
  66. "css/searxng-rtl.min.css": PATH.src + "/less/style-rtl.less",
  67. "css/rss.min.css": PATH.src + "/less/rss.less",
  68. // build JS files
  69. "js/searxng.head.min": PATH.src + "/js/searxng.head.js",
  70. "js/searxng.min": PATH.src + "/js/searxng.js",
  71. },
  72. // file naming conventions / pathnames are relative to outDir (PATH.dist)
  73. output: {
  74. entryFileNames: "[name].js",
  75. chunkFileNames: "[name].js",
  76. assetFileNames: "[name].[ext]",
  77. // Vite does not support "rollupOptions.output.sourcemap".
  78. // Please use "build.sourcemap" instead.
  79. // sourcemap: true,
  80. },
  81. },
  82. }, // end: build
  83. plugins: [
  84. stylelint({
  85. build: true,
  86. emitWarningAsError: true,
  87. fix: true,
  88. }),
  89. // Leaflet
  90. viteStaticCopy({
  91. targets: [
  92. { src: PATH.leaflet + "/leaflet.{js,js.map}", dest: PATH.dist + "/js" },
  93. { src: PATH.leaflet + "/images/*.png", dest: PATH.dist + "/css/images/" },
  94. { src: PATH.leaflet + "/*.{css,css.map}", dest: PATH.dist + "/css" },
  95. { src: PATH.static + "/**/*", dest: PATH.dist },
  96. ]
  97. })
  98. ],
  99. ] // end: plugins
  100. });