rollup.config.js 2.4 KB

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