UNPKG

npm-allakando-publish

Version:

Allakando's web component library

111 lines (106 loc) 2.96 kB
import resolve from "@rollup/plugin-node-resolve" import commonjs from "@rollup/plugin-commonjs" import pkg from "./package.json" import { terser } from "rollup-plugin-terser" import scss from "rollup-plugin-scss" import { string } from "rollup-plugin-string" import sass from "sass" import bundleSize from "rollup-plugin-bundle-size" import fs from "fs" const DIST_FOLDER = "dist" const LIBRARY_NAME = pkg.name const EXPORT_NAME = "AllakandoWebUI" const VERSION = pkg.version const AUTHOR = pkg.author const DESCRIPTION = pkg.description const BANNER = `/** @preserve @license @cc_on * ---------------------------------------------------------- * ${LIBRARY_NAME} version ${VERSION} * ${DESCRIPTION} * Copyright (c) ${new Date().getFullYear()} ${AUTHOR} * All Rights Reserved. MIT License * https://mit-license.org/ * ---------------------------------------------------------- */\n` const bundles = { bundle: "./src/index.bundle.js", init: "./src/index.wc.js", utility: "./src/index.utility.js", } let productionBuilds = [] productionBuilds = Object.keys(bundles).map(bundle => { return { input: bundles[bundle], output: [ { file: `${DIST_FOLDER}/js/${bundle}.js`, name: EXPORT_NAME, format: "umd", banner: BANNER }, { file: `${DIST_FOLDER}/js/esm-${bundle}.js`, format: "esm", banner: BANNER } ], plugins: [ resolve({ extensions: [".js"] }), commonjs(), scss({ output: false, outputStyle: "compressed" }), string({ include: ["**/*.html"] }), { name: "build-stylesheets", buildEnd() { fs.mkdirSync(`${DIST_FOLDER}/css`, { recursive: true }) fs.readdirSync("./src/Assets/Stylesheets/Global/").map(fileName => { const css = sass.compile(`./src/Assets/Stylesheets/Global/${fileName}`, { style: "compressed", sourceMap: false }) fs.writeFileSync(`${DIST_FOLDER}/css/${fileName.replace(/.scss$/, "")}.css`, `${BANNER}${css.css}`, "utf-8") }) return null } }, { name: "transform", transform(code, id) { let generatedCode = code if (id.match(/Components\/.*\/ako-.*.js/)) { const searchString = "const templateElement = document.createElement(\"template\")" if (code.includes(searchString)) { generatedCode = `${code.replace(searchString, `if(typeof document !== "undefined" && typeof window !== "undefined"){\n${searchString}`)}}` } else { generatedCode = `${code.replace("/**", "if(typeof document !== \"undefined\" && typeof window !== \"undefined\"){\n/**")}}` } } return { code: generatedCode } } }, terser({ format: { comments(node, comment) { const text = comment.value const type = comment.type if (type == "comment2") { return /@preserve|@license|@cc_on/i.test(text) } } } }), bundleSize() ] } }) export default productionBuilds