126 lines
3.7 KiB
JavaScript
126 lines
3.7 KiB
JavaScript
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';
|
|
const _builderProxy = proxy('/_builder', {
|
|
target:"http://localhost:3000",
|
|
pathRewrite: {'^/_builder' : ''}
|
|
});
|
|
|
|
const apiProxy = proxy(['/_builder/api/**', '/_builder/**/componentlibrary', '/_builder/**/componentlibraryGenerators'] , {
|
|
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", "isInteger", "isNumber", "isString", "isBoolean", "isDate", "isArray", "isObject", "clone", "values", "keyBy", "isNaN",
|
|
"keys", "orderBy", "concat", "reverse", "difference", "merge", "flatten", "each", "pull", "join", "defaultCase", "uniqBy", "every", "uniqWith", "isFunction", "groupBy",
|
|
"differenceBy", "intersectionBy", "isEqual", "max", "sortBy", "assign", "uniq", "trimChars", "trimCharsStart", "isObjectLike", "flattenDeep", "indexOf", "isPlainObject",
|
|
"toNumber"];
|
|
|
|
const lodash_exports = ["flow", "join", "replace", "trim", "dropRight", "takeRight", "head", "reduce",
|
|
"tail", "startsWith", "findIndex", "merge",
|
|
"assign", "each", "find", "orderBy", "union"];
|
|
|
|
const outputpath = "../server/builder";
|
|
|
|
const coreExternal = [
|
|
"lodash", "lodash/fp", "date-fns",
|
|
"lunr", "safe-buffer", "shortid",
|
|
"@nx-js/compiler-util"
|
|
];
|
|
|
|
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 },
|
|
{ src: 'node_modules/@budibase/client/dist/budibase-client.esm.mjs', 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`);
|
|
}
|
|
}),
|
|
|
|
resolve({
|
|
browser: true,
|
|
dedupe: importee => {
|
|
return importee === 'svelte'
|
|
|| importee.startsWith('svelte/')
|
|
|| coreExternal.includes(importee);
|
|
}
|
|
|
|
}),
|
|
commonjs({
|
|
namedExports: {
|
|
"lodash/fp": lodash_fp_exports,
|
|
"lodash":lodash_exports,
|
|
"shortid": ["generate"]
|
|
}
|
|
}),
|
|
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: [apiProxy,_builderProxy]
|
|
}),
|
|
|
|
// If we're building for production (npm run build
|
|
// instead of npm run dev), minify
|
|
production && terser()
|
|
],
|
|
watch: {
|
|
clearScreen: false
|
|
}
|
|
};
|