aboutsummaryrefslogtreecommitdiff
path: root/rollup.config.js
diff options
context:
space:
mode:
Diffstat (limited to 'rollup.config.js')
-rw-r--r--rollup.config.js122
1 files changed, 122 insertions, 0 deletions
diff --git a/rollup.config.js b/rollup.config.js
new file mode 100644
index 0000000..d27110d
--- /dev/null
+++ b/rollup.config.js
@@ -0,0 +1,122 @@
+import resolve from '@rollup/plugin-node-resolve';
+import replace from '@rollup/plugin-replace';
+import commonjs from '@rollup/plugin-commonjs';
+import svelte from 'rollup-plugin-svelte';
+import babel from '@rollup/plugin-babel';
+import { terser } from 'rollup-plugin-terser';
+import sveltePreprocess from 'svelte-preprocess';
+import typescript from '@rollup/plugin-typescript';
+import config from 'sapper/config/rollup.js';
+import pkg from './package.json';
+
+const mode = process.env.NODE_ENV;
+const dev = mode === 'development';
+const legacy = !!process.env.SAPPER_LEGACY_BUILD;
+
+const preprocess = sveltePreprocess({
+ postcss: {
+ plugins: [
+ require('postcss-import')(),
+ require('postcss-nested')()
+ ]
+ }
+});
+
+const onwarn = (warning, onwarn) =>
+ (warning.code === 'MISSING_EXPORT' && /'preload'/.test(warning.message)) ||
+ (warning.code === 'CIRCULAR_DEPENDENCY' && /[/\\]@sapper[/\\]/.test(warning.message)) ||
+ (warning.code === 'THIS_IS_UNDEFINED') ||
+ onwarn(warning);
+
+export default {
+ client: {
+ input: config.client.input().replace(/.js$/, '.ts'),
+ output: config.client.output(),
+ plugins: [
+ replace({
+ 'process.browser': true,
+ 'process.env.NODE_ENV': JSON.stringify(mode)
+ }),
+ svelte({
+ dev,
+ hydratable: true,
+ preprocess: preprocess,
+ emitCss: true
+ }),
+ resolve({
+ browser: true,
+ dedupe: ['svelte']
+ }),
+ commonjs(),
+ typescript({ sourceMap: dev }),
+
+ legacy && babel({
+ extensions: ['.js', '.mjs', '.html', '.svelte'],
+ babelHelpers: 'runtime',
+ exclude: ['node_modules/@babel/**'],
+ presets: [
+ ['@babel/preset-env', {
+ targets: '> 0.25%, not dead'
+ }]
+ ],
+ plugins: [
+ '@babel/plugin-syntax-dynamic-import',
+ ['@babel/plugin-transform-runtime', {
+ useESModules: true
+ }]
+ ]
+ }),
+
+ !dev && terser({
+ module: true
+ })
+ ],
+
+ preserveEntrySignatures: false,
+ onwarn,
+ },
+
+ server: {
+ input: { server: config.server.input().server.replace(/.js$/, ".ts") },
+ output: config.server.output(),
+ plugins: [
+ replace({
+ 'process.browser': false,
+ 'process.env.NODE_ENV': JSON.stringify(mode)
+ }),
+ svelte({
+ generate: 'ssr',
+ hydratable: true,
+ preprocess: preprocess,
+ dev
+ }),
+ resolve({
+ dedupe: ['svelte']
+ }),
+ commonjs(),
+ typescript({ sourceMap: dev })
+ ],
+ external: Object.keys(pkg.dependencies).concat(require('module').builtinModules),
+
+ preserveEntrySignatures: 'strict',
+ onwarn,
+ },
+
+ serviceworker: {
+ input: config.serviceworker.input().replace(/.js$/, '.ts'),
+ output: config.serviceworker.output(),
+ plugins: [
+ resolve(),
+ replace({
+ 'process.browser': true,
+ 'process.env.NODE_ENV': JSON.stringify(mode)
+ }),
+ commonjs(),
+ typescript({ sourceMap: dev }),
+ !dev && terser()
+ ],
+
+ preserveEntrySignatures: false,
+ onwarn,
+ }
+};