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-hot' import svelte from 'rollup-plugin-svelte' import babel from 'rollup-plugin-babel' // import { eslint } from 'rollup-plugin-eslint' // import browsersync from 'rollup-plugin-browsersync' // import hmr from 'rollup-plugin-hot' import sveltePreprocess from 'svelte-preprocess' import { terser } from 'rollup-plugin-terser' import config from 'sapper/config/rollup' import pkg from './package.json' // Define environment and things const mode = process.env.NODE_ENV const dev = mode === 'development' const legacy = !!process.env.SAPPER_LEGACY_BUILD const hot = dev // Svelte const onwarn = (warning, onwarn) => (warning.code === 'CIRCULAR_DEPENDENCY' && /[/\\]@sapper[/\\]/.test(warning.message)) || onwarn(warning) // Preprocessors const preprocess = sveltePreprocess({ scss: { includePaths: ['node_modules', 'src'] }, postcss: true }) export default { /* ** Client */ client: { input: config.client.input(), output: { ...config.client.output(), ...dev && { exports: 'named' } }, // experimentalCodeSplitting: true, plugins: [ // Javascript svelte({ dev, preprocess, hydratable: true, emitCss: true, // ...(!dev && { css: css => css.write('static/bundle.css', dev), // }), // hot: hot && { // // sapper-dev-client expects either webpack or rollup with no HMR, so // // we need to prevent it from doing full reloads with rollup // patchSapperDevClient: true, // // optimistic will try to recover from runtime errors during // // component init (instead of doing a full reload) // optimistic: true, // } }), replace({ 'process.browser': true, 'process.env.NODE_ENV': JSON.stringify(mode) }), resolve({ browser: true, extensions: ['.mjs', '.js', '.json', '.html', '.svelte', '.scss'], dedupe: ['svelte'] }), commonjs(), // dev && eslint(), !dev && babel({ extensions: ['.js', '.mjs', '.html', '.svelte'], exclude: ['*.scss', '*.css', 'node_modules/@babel/**'], runtimeHelpers: true }), // hot && hmr({ // public: '__sapper__/dev', // inMemory: true, // }), // Compress Javascript !dev && terser({ module: true }), ], onwarn, }, /* ** Server */ server: { input: config.server.input(), output: config.server.output(), plugins: [ replace({ 'process.browser': false, 'process.env.NODE_ENV': JSON.stringify(mode) }), svelte({ dev, preprocess, generate: 'ssr' }), resolve({ browser: true, extensions: ['.mjs', '.js', '.json', '.html', '.svelte', '.scss'], dedupe: ['svelte'] }), commonjs(), ], external: Object.keys(pkg.dependencies).concat( require('module').builtinModules || Object.keys(process.binding('natives')) ), onwarn, }, /* ** Service worker */ // serviceworker: { // input: config.serviceworker.input(), // output: config.serviceworker.output(), // plugins: [ // resolve(), // replace({ // 'process.browser': true, // 'process.env.NODE_ENV': JSON.stringify(mode) // }), // commonjs(), // !dev && terser() // ], // onwarn, // } }