import svelte from 'rollup-plugin-svelte'; import resolve from 'rollup-plugin-node-resolve'; import commonjs from 'rollup-plugin-commonjs'; import url from 'rollup-plugin-url'; import livereload from 'rollup-plugin-livereload'; import { terser } from 'rollup-plugin-terser'; import builtins from 'rollup-plugin-node-builtins'; import nodeglobals from 'rollup-plugin-node-globals'; import copy from 'rollup-plugin-copy'; import browsersync from "rollup-plugin-browsersync"; import proxy from "http-proxy-middleware"; const target = 'http://localhost:4001/_builder'; const _builderProxy = proxy('/_builder', { target:"http://localhost:3000", pathRewrite: {'^/_builder' : ''} }); const apiProxy = proxy('/_builder/api', { target, logLevel: "debug", changeOrigin: true, cookieDomainRewrite: true, onProxyReq(proxyReq) { if (proxyReq.getHeader("origin")) { proxyReq.setHeader("origin", target) } } }); const production = !process.env.ROLLUP_WATCH; const lodash_fp_exports = ["union", "reduce", "isUndefined", "cloneDeep", "split", "some", "map", "filter", "isEmpty", "countBy", "includes", "last", "find", "constant", "take", "first", "intersection", "mapValues", "isNull", "has", "isNumber", "isString", "isBoolean", "isDate", "isArray", "isObject", "clone", "values", "keyBy", "keys", "orderBy", "concat", "reverse", "difference", "merge", "flatten", "each", "pull", "join", "defaultCase", "uniqBy", "every", "uniqWith", "isFunction", "groupBy", "differenceBy", "intersectionBy", "isEqual", "max", "sortBy", "assign"]; const lodash_exports = ["toNumber", "flow", "isArray", "join", "replace", "trim", "dropRight", "takeRight", "head", "isUndefined", "isNull", "isNaN", "reduce", "isEmpty", "constant", "tail", "includes", "startsWith", "findIndex", "isInteger", "isDate", "isString", "split", "clone", "keys", "isFunction", "merge", "has", "isBoolean", "isNumber", "isObjectLike", "assign", "some", "each", "find", "orderBy", "union", "cloneDeep"]; const outputpath = "../server/builder"; export default { input: 'src/main.js', output: { sourcemap: true, format: 'iife', name: 'app', file: `${outputpath}/bundle.js` }, plugins: [ copy({ targets: [ { src: 'src/index.html', dest: outputpath }, { src: 'src/favicon.png', dest: outputpath } ] }), svelte({ // enable run-time checks when not in production dev: !production, include: 'src/**/*.svelte', // we'll extract any component CSS out into // a separate file — better for performance css: css => { css.write(`${outputpath}/bundle.css`); } }), // 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/rollup-plugin-commonjs resolve({ browser: true, dedupe: importee => importee === 'svelte' || importee.startsWith('svelte/') }), commonjs({ namedExports: { "lodash/fp": lodash_fp_exports, "lodash":lodash_exports, "shortid": ["generate"] }, include: /node_modules/ }), url({ limit: 0, include: ["**/*.woff2", "**/*.png"], fileName: "[dirname][name][extname]", emitFiles: true }), url({ limit: 0, include: ["**/*.css"], fileName: "[name][extname]", emitFiles: true }), builtins(), nodeglobals(), // Watch the `dist` directory and refresh the // browser on changes when not in production !production && livereload(outputpath), !production && browsersync({ server: outputpath, middleware: [_builderProxy, apiProxy] }), // If we're building for production (npm run build // instead of npm run dev), minify production && terser() ], watch: { clearScreen: false } };