import resolve from '@rollup/plugin-node-resolve';
import livereload from 'rollup-plugin-livereload';
import { terser } from 'rollup-plugin-terser';
+import { spawn } from 'child_process';
import css from 'rollup-plugin-css-only';
+import { readFileSync, writeFileSync } from 'fs';
const production = !process.env.ROLLUP_WATCH;
function serve() {
- let server;
+ let server;
- function toExit() {
- if (server) server.kill(0);
- }
+ function toExit() {
+ if (server) server.kill(0);
+ }
- return {
- writeBundle() {
- if (server) return;
- server = require('child_process').spawn('yarn', ['start', '-d'], {
- stdio: ['ignore', 'inherit', 'inherit'],
- shell: true
- });
+ return {
+ writeBundle() {
+ if (server) return;
+ server = spawn('yarn', ['start', '-d'], {
+ stdio: ['ignore', 'inherit', 'inherit'],
+ shell: true
+ });
- process.on('SIGTERM', toExit);
- process.on('exit', toExit);
- }
- };
+ process.on('SIGTERM', toExit);
+ process.on('exit', toExit);
+ }
+ };
}
export default {
- input: 'src/main.js',
- output: {
- sourcemap: true,
- format: 'iife',
- name: 'app',
- file: 'dist/build/bundle.js'
- },
- plugins: [
- svelte({
- compilerOptions: {
- // enable run-time checks when not in production
- dev: !production
- }
- }),
- // we'll extract any component CSS out into
- // a separate file - better for performance
- css({ output: 'bundle.css' }),
+ input: 'src/main.js',
+ output: {
+ sourcemap: true,
+ format: 'iife',
+ name: 'app',
+ file: 'dist/build/bundle.js'
+ },
+ plugins: [
+ svelte({
+ compilerOptions: {
+ // enable run-time checks when not in production
+ dev: !production
+ }
+ }),
+ css({
+ // output: function (styles, styleNodes) {
+ output: function (styles) {
+ // make sure global_styles.css gets appended to bundle.css,
+ // not prepended.
+ // The ':global()' rules (https://svelte.dev/docs#style) get
+ // prepended so we can't use them to overwrite bootstrap.css
+ // rules
+ let global_styles = readFileSync('src/global_style.css');
+ styles += global_styles;
+ writeFileSync('dist/build/bundle.css', styles);
+ }
+ }),
- // If you have external dependencies installed from
- // npm, you'll most likely need these plugins. In
- // some cases you'll need additional configuration -
- // consult the documentation for details:
- // https://github.com/rollup/plugins/tree/master/packages/commonjs
- resolve({
- browser: true,
- dedupe: ['svelte']
- }),
- commonjs(),
+ // If you have external dependencies installed from
+ // npm, you'll most likely need these plugins. In
+ // some cases you'll need additional configuration -
+ // consult the documentation for details:
+ // https://github.com/rollup/plugins/tree/master/packages/commonjs
+ resolve({
+ browser: true,
+ dedupe: ['svelte']
+ }),
+ commonjs(),
- // In dev mode, call `npm run start` once
- // the bundle has been generated
- !production && serve(),
+ // In dev mode, call `npm run start` once
+ // the bundle has been generated
+ !production && serve(),
- // Watch the `dist` directory and refresh the
- // browser on changes when not in production
- !production && livereload('dist'),
+ // Watch the `dist` directory and refresh the
+ // browser on changes when not in production
+ !production && livereload('dist'),
- // If we're building for production (npm run build
- // instead of npm run dev), minify
- production && terser()
- ],
- watch: {
- clearScreen: false
- }
+ // If we're building for production (npm run build
+ // instead of npm run dev), minify
+ production && terser()
+ ],
+ watch: {
+ clearScreen: false
+ }
};