rollup.config.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import resolve from '@rollup/plugin-node-resolve';
  2. import replace from '@rollup/plugin-replace';
  3. import commonjs from '@rollup/plugin-commonjs';
  4. import svelte from 'rollup-plugin-svelte';
  5. import babel from '@rollup/plugin-babel';
  6. import { terser } from 'rollup-plugin-terser';
  7. import config from 'sapper/config/rollup.js';
  8. import pkg from './package.json';
  9. const mode = process.env.NODE_ENV;
  10. const dev = mode === 'development';
  11. const legacy = !!process.env.SAPPER_LEGACY_BUILD;
  12. const onwarn = (warning, onwarn) =>
  13. (warning.code === 'MISSING_EXPORT' && /'preload'/.test(warning.message)) ||
  14. (warning.code === 'CIRCULAR_DEPENDENCY' && /[/\\]@sapper[/\\]/.test(warning.message)) ||
  15. onwarn(warning);
  16. export default {
  17. client: {
  18. input: config.client.input(),
  19. output: config.client.output(),
  20. plugins: [
  21. replace({
  22. 'process.browser': true,
  23. 'process.env.NODE_ENV': JSON.stringify(mode)
  24. }),
  25. svelte({
  26. dev,
  27. hydratable: true,
  28. emitCss: true
  29. }),
  30. resolve({
  31. browser: true,
  32. dedupe: ['svelte']
  33. }),
  34. commonjs(),
  35. legacy && babel({
  36. extensions: ['.js', '.mjs', '.html', '.svelte'],
  37. babelHelpers: 'runtime',
  38. exclude: ['node_modules/@babel/**'],
  39. presets: [
  40. ['@babel/preset-env', {
  41. targets: '> 0.25%, not dead'
  42. }]
  43. ],
  44. plugins: [
  45. '@babel/plugin-syntax-dynamic-import',
  46. ['@babel/plugin-transform-runtime', {
  47. useESModules: true
  48. }]
  49. ]
  50. }),
  51. !dev && terser({
  52. module: true
  53. })
  54. ],
  55. preserveEntrySignatures: false,
  56. onwarn,
  57. },
  58. server: {
  59. input: config.server.input(),
  60. output: config.server.output(),
  61. plugins: [
  62. replace({
  63. 'process.browser': false,
  64. 'process.env.NODE_ENV': JSON.stringify(mode)
  65. }),
  66. svelte({
  67. generate: 'ssr',
  68. hydratable: true,
  69. dev
  70. }),
  71. resolve({
  72. dedupe: ['svelte']
  73. }),
  74. commonjs()
  75. ],
  76. external: Object.keys(pkg.dependencies).concat(require('module').builtinModules),
  77. preserveEntrySignatures: 'strict',
  78. onwarn,
  79. },
  80. serviceworker: {
  81. input: config.serviceworker.input(),
  82. output: config.serviceworker.output(),
  83. plugins: [
  84. resolve(),
  85. replace({
  86. 'process.browser': true,
  87. 'process.env.NODE_ENV': JSON.stringify(mode)
  88. }),
  89. commonjs(),
  90. !dev && terser()
  91. ],
  92. preserveEntrySignatures: false,
  93. onwarn,
  94. }
  95. };