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 babel from 'rollup-plugin-babel';
import { terser } from 'rollup-plugin-terser';
import config from 'sapper/config/rollup.js';
import pkg from './package.json';
import buble from 'rollup-plugin-buble';
import uglify from 'rollup-plugin-uglify';
import sass from 'node-sass';
const mode =
processprocess.env.NODE_ENV;
const dev = mode === 'development';
const legacy = !!
processprocess.env.SAPPER_LEGACY_BUILD;
const onwarn = (warning, onwarn) => (warning.code === 'CIRCULAR_DEPENDENCY' && /[/\\]
@sapper[/\\]/.test(warning.message)) || onwarn(warning);
export default {
client: {
input: config.client.input(),
output: config.client.output(),
plugins: [
replace({
'process.browser': true,
'process.env.NODE_ENV':
JSONJSON.stringify(mode)
}),
svelte({
dev,
hydratable: true,
emitCss: true
}),
resolve({
browser: true,
dedupe: ['svelte']
}),
commonjs(),
legacy &&
babelbabel({
extensions: ['.js', '.mjs', '.html', '.svelte'],
runtimeHelpers: true,
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
})
],
onwarn,
},
server: {
input: config.server.input(),
output: config.server.output(),
plugins: [
replace({
'process.browser': false,
'process.env.NODE_ENV':
JSONJSON.stringify(mode)
}),
svelte({
generate: 'ssr',
dev
}),
resolve({
dedupe: ['svelte']
}),
commonjs()
],
external:
ObjectObject.keys(pkg.dependencies).concat(
require('module').
builtinModules ||
ObjectObject.keys(
processprocess.binding('natives'))
),
onwarn,
},
serviceworker: {
input: config.serviceworker.input(),
output: config.serviceworker.output(),
plugins: [
resolve(),
replace({
'process.browser': true,
'process.env.NODE_ENV':
JSONJSON.stringify(mode)
}),
commonjs(),
!dev && terser()
],
onwarn,
},
plugins: [
svelte({
// enable run-time checks when not in production
dev: dev,
// we'll extract any component CSS out into
// a separate file — better for performance
css: css => {
css.write('public/bundle.css');
},
// this results in smaller CSS files
cascade: false,
preprocess: {
style: ({ content, attributes }) => {
if (attributes.type !== 'text/scss') return;
return new
PromisePromise((fulfil, reject) => {
sass.render({
data: content,
includePaths: ['src'],
sourceMap: true,
outFile: 'x' // this is necessary, but is ignored
}, (err, result) => {
if (err) return reject(err);
fulfil({
code: result.css.toString(),
map: result.map.toString()
});
});
});
}
}
}),
resolve(),
commonjs(),
!dev && buble({ exclude: 'node_modules/**' }),
!dev && uglify()
]
};