]> git.openstreetmap.org Git - nominatim-ui.git/blobdiff - rollup.config.js
Add build output into dist/ for immediate use
[nominatim-ui.git] / rollup.config.js
index 6f602dd9f4adb1bb8b3d60fb037aa8b79185b2f4..757a22d15f9743d32306b6d9484adce37ff32357 100644 (file)
@@ -3,74 +3,86 @@ import commonjs from '@rollup/plugin-commonjs';
 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', '--dev'], {
-                               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
+  }
 };