rollup.config.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import copy from 'rollup-plugin-copy';
  2. import svelte from 'rollup-plugin-svelte';
  3. import postcss from 'rollup-plugin-postcss';
  4. import alias from '@rollup/plugin-alias'
  5. import commonjs from '@rollup/plugin-commonjs';
  6. import terser from '@rollup/plugin-terser';
  7. import resolve from '@rollup/plugin-node-resolve';
  8. import css from 'rollup-plugin-css-only';
  9. import autoprefixer from 'autoprefixer';
  10. import discard from 'postcss-discard';
  11. import path from 'path';
  12. import url from 'url';
  13. import tailwindcss from 'tailwindcss';
  14. const production = !process.env.ROLLUP_WATCH;
  15. const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
  16. export default {
  17. input: 'src/main.js',
  18. output: {
  19. sourcemap: true,
  20. format: 'esm',
  21. name: 'app',
  22. file: 'build/bundle.js'
  23. },
  24. plugins: [
  25. alias({
  26. entries: {
  27. 'diskConfig': path.resolve(__dirname, 'diskConfig.cloud.js')
  28. }
  29. }),
  30. svelte({
  31. compilerOptions: {
  32. // enable run-time checks when not in production
  33. dev: !production
  34. }
  35. }),
  36. // we'll extract any component CSS out into
  37. // a separate file - better for performance
  38. postcss({
  39. extract: true,
  40. minimize: production,
  41. plugins: [
  42. tailwindcss,
  43. autoprefixer,
  44. discard({rule: function(node, value)
  45. {
  46. if(!value.startsWith('.fa-') || !value.endsWith(":before"))
  47. return false;
  48. switch(value)
  49. {
  50. case '.fa-info-circle:before':
  51. case '.fa-wifi:before':
  52. case '.fa-microchip:before':
  53. case '.fa-compact-disc:before':
  54. case '.fa-discord:before':
  55. case '.fa-github:before':
  56. return false;
  57. }
  58. return true;
  59. }})
  60. ],
  61. }),
  62. // Copy required font files
  63. copy({
  64. targets: [
  65. {
  66. src: 'node_modules/@fortawesome/fontawesome-free/webfonts',
  67. dest: '.'
  68. }
  69. ]
  70. }),
  71. // If you have external dependencies installed from
  72. // npm, you'll most likely need these plugins. In
  73. // some cases you'll need additional configuration -
  74. // consult the documentation for details:
  75. // https://github.com/rollup/plugins/tree/master/packages/commonjs
  76. resolve({
  77. browser: true,
  78. dedupe: ['svelte'],
  79. exportConditions: ['svelte']
  80. }),
  81. commonjs(),
  82. // If we're building for production (npm run build
  83. // instead of npm run dev), minify
  84. production && terser()
  85. ],
  86. watch: {
  87. clearScreen: false
  88. }
  89. };