This repository has been archived on 2023-05-03. You can view files and clone it, but cannot push or open issues or pull requests.
ocp-wg-frontend/rollup.config.js
2022-11-18 19:41:03 +07:00

200 lines
5.6 KiB
JavaScript

import svelte from "rollup-plugin-svelte";
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import livereload from "rollup-plugin-livereload";
import { terser } from "rollup-plugin-terser";
// library that helps you import in svelte with
// absolute paths, instead of
// import Component from "../../../../components/Component.svelte";
// we will be able to say
// import Component from "components/Component.svelte";
import alias from "@rollup/plugin-alias";
import fs from "fs";
const production = !process.env.ROLLUP_WATCH;
// configure aliases for absolute imports
const aliases = alias({
resolve: [".svelte", ".js"], //optional, by default this will just look for .js files or folders
entries: [
{ find: "components", replacement: "src/components" },
{ find: "views", replacement: "src/views" },
{ find: "assets", replacement: "src/assets" },
],
});
const indexTemplate = `<!--
=========================================================
* Notus Svelte - v1.1.0 based on Tailwind Starter Kit by Creative Tim
=========================================================
* Product Page: https://www.creative-tim.com/product/notus-svelte
* Copyright 2021 Creative Tim (https://www.creative-tim.com)
* Licensed under MIT (https://github.com/creativetimofficial/notus-svelte/blob/main/LICENSE.md)
* Tailwind Starter Kit Page: https://www.creative-tim.com/learning-lab/tailwind-starter-kit/presentation
* Coded by Creative Tim
=========================================================
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon.png" />
<link rel="stylesheet" href="/build/bundle.css" />
<link
rel="stylesheet"
href="/assets/vendor/@fortawesome/fontawesome-free/css/all.min.css"
/>
<link rel="stylesheet" href="/assets/styles/tailwind.css" />
<title>Notus Svelte</title>
<script>
if (process === undefined) {
var process = { env: {<<process-env-status>>} };
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
<script defer src="/build/bundle.js"></script>
</head>
<body class="text-blueGray-700 antialiased">
<noscript>
<strong
>We're sorry but notus-svelte doesn't work properly without
JavaScript enabled. Please enable it to continue.</strong
>
</noscript>
<div id="app"></div>
</body>
</html>
`;
if (production) {
fs.writeFileSync(
"./public/index.html",
indexTemplate
.replace("<<process-env-status>>", "PRODUCTION: true")
.replace(/<<live-preview-link>>/g, "/notus-svelte")
);
fs.writeFileSync(
"./public/200.html",
indexTemplate
.replace("<<process-env-status>>", "PRODUCTION: true")
.replace(/<<live-preview-link>>/g, "/notus-svelte")
);
fs.writeFileSync(
"./public/404.html",
indexTemplate
.replace("<<process-env-status>>", "PRODUCTION: true")
.replace(/<<live-preview-link>>/g, "/notus-svelte")
);
} else {
fs.writeFileSync(
"./public/index.html",
indexTemplate
.replace("<<process-env-status>>", "")
.replace(/<<live-preview-link>>/g, "")
);
fs.writeFileSync(
"./public/200.html",
indexTemplate
.replace("<<process-env-status>>", "")
.replace(/<<live-preview-link>>/g, "")
);
fs.writeFileSync(
"./public/404.html",
indexTemplate
.replace("<<process-env-status>>", "")
.replace(/<<live-preview-link>>/g, "")
);
}
function serve() {
let server;
function toExit() {
if (server) server.kill(0);
}
return {
writeBundle() {
if (server) return;
server = require("child_process").spawn(
"npm",
["run", "start", "--", "--dev"],
{
stdio: ["ignore", "inherit", "inherit"],
shell: true,
}
);
process.on("SIGTERM", toExit);
process.on("exit", toExit);
},
};
}
export default {
input: "src/main.js",
output: {
sourcemap: true,
format: "iife",
name: "app",
file: "public/build/bundle.js",
},
plugins: [
svelte({
// 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: (css) => {
css.write("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/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(),
// Watch the `public` directory and refresh the
// browser on changes when not in production
!production && livereload("public"),
// If we're building for production (npm run build
// instead of npm run dev), minify
production && terser(),
// for absolut imports
// i.e., instead of
// import Component from "../../../../components/Component.svelte";
// we will be able to say
// import Component from "components/Component.svelte";
aliases,
],
watch: {
clearScreen: false,
},
};