rollup.config.js 2.2 KB

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