michalvankodev-site/rollup.config.js

139 lines
3.3 KiB
JavaScript
Raw Normal View History

2019-12-29 23:30:56 +01:00
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 config from 'sapper/config/rollup.js'
import pkg from './package.json'
import svg from 'rollup-plugin-svg'
2020-09-26 14:49:58 +02:00
import sveltePreprocess from 'svelte-preprocess'
import typescript from '@rollup/plugin-typescript'
2019-12-29 23:30:56 +01:00
const mode = process.env.NODE_ENV
const dev = mode === 'development'
const legacy = !!process.env.SAPPER_LEGACY_BUILD
2019-12-29 23:30:56 +01:00
const onwarn = (warning, onwarn) =>
2020-09-26 14:49:58 +02:00
(warning.code === 'MISSING_EXPORT' && /'preload'/.test(warning.message)) ||
2020-12-01 12:05:15 +01:00
(warning.code === 'CIRCULAR_DEPENDENCY' &&
/[/\\]@sapper[/\\]/.test(warning.message)) ||
2019-12-29 23:30:56 +01:00
onwarn(warning)
const dedupe = (importee) =>
2019-12-29 23:30:56 +01:00
importee === 'svelte' || importee.startsWith('svelte/')
export default {
2019-12-29 23:30:56 +01:00
client: {
2020-12-01 12:05:15 +01:00
input: config.client.input().replace(/\.js$/, '.ts'),
2019-12-29 23:30:56 +01:00
output: config.client.output(),
plugins: [
replace({
'process.browser': true,
'process.env.NODE_ENV': JSON.stringify(mode),
}),
svelte({
2020-12-01 12:05:15 +01:00
compilerOptions: {
dev,
hydratable: true,
},
2019-12-29 23:30:56 +01:00
emitCss: true,
2020-09-26 14:49:58 +02:00
preprocess: sveltePreprocess({
sourceMap: dev,
defaults: {
script: 'typescript',
},
}),
2019-12-29 23:30:56 +01:00
}),
resolve({
browser: true,
dedupe,
}),
commonjs(),
svg(),
2019-12-29 23:30:56 +01:00
legacy &&
babel({
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,
},
],
],
}),
2019-12-29 23:30:56 +01:00
!dev &&
terser({
module: true,
}),
],
2019-12-29 23:30:56 +01:00
onwarn,
},
2019-12-29 23:30:56 +01:00
server: {
2020-12-01 12:05:15 +01:00
input: config.server.input().server.replace(/\.js$/, '.ts'),
2019-12-29 23:30:56 +01:00
output: config.server.output(),
plugins: [
replace({
'process.browser': false,
'process.env.NODE_ENV': JSON.stringify(mode),
}),
svelte({
2020-12-01 12:05:15 +01:00
compilerOptions: {
generate: 'ssr',
dev,
hydratable: true,
},
2020-09-26 14:49:58 +02:00
preprocess: sveltePreprocess({
sourceMap: dev,
defaults: {
script: 'typescript',
2020-12-01 12:05:15 +01:00
},
2020-09-26 14:49:58 +02:00
}),
2019-12-29 23:30:56 +01:00
}),
resolve({
dedupe,
}),
commonjs(),
2020-12-01 12:05:15 +01:00
typescript({ sourceMap: dev }),
svg(),
2019-12-29 23:30:56 +01:00
],
external: Object.keys(pkg.dependencies).concat(
require('module').builtinModules ||
Object.keys(process.binding('natives'))
),
2019-12-29 23:30:56 +01:00
onwarn,
},
2019-12-29 23:30:56 +01:00
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(),
],
2019-12-29 23:30:56 +01:00
onwarn,
},
}