@amberflo-test/ui-kit-test
Version:
Test-Amberflo UI Kit
79 lines (70 loc) • 2.11 kB
JavaScript
import babel from "@rollup/plugin-babel";
import { nodeResolve } from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import postcss from "rollup-plugin-postcss";
import visualizer from "rollup-plugin-visualizer";
import alias from "rollup-plugin-alias";
import { terser } from "rollup-plugin-terser";
import * as path from "path";
import { readdirSync } from "fs";
const projectRootDir = path.resolve(path.dirname(""));
import pkg from "./package.json";
const getDirectories = (source) =>
readdirSync(source, { withFileTypes: true })
.filter((dirent) => dirent.isDirectory())
.map((dirent) => `${source}/${dirent.name}`);
const routes = [
...getDirectories("src/components/atoms"),
...getDirectories("src/components/molecules"),
...getDirectories("src/components/organisms"),
];
const input = {};
routes.forEach((route) => {
const [, packageName] = route.match(/.*\/(.*)/);
input[packageName] = `${route}/index.jsx`;
});
export default {
input: {
index: "src/components/index.js",
...input,
},
output: [{ dir: pkg.module, format: "cjs" }],
plugins: [
alias({
resolve: [".jsx", ".js"],
entries: {
utils: path.join(projectRootDir, "src/utils"),
components: path.join(projectRootDir, "src/components"),
styles: path.join(projectRootDir, "src/styles"),
},
}),
postcss({
plugins: [],
minimize: true,
extensions: [".css", ".sass"],
}),
nodeResolve({
extensions: [".ts", ".js", ".tsx", ".jsx"],
}),
babel({
presets: ["@babel/preset-react"],
extensions: [".ts", ".js", ".tsx", ".jsx"],
plugins: [
"@babel/plugin-proposal-nullish-coalescing-operator",
"@babel/plugin-proposal-optional-chaining",
"@babel/plugin-transform-runtime",
],
babelHelpers: "runtime",
}),
commonjs(),
terser(),
visualizer({
filename: "bundle-analysis.html",
open: true,
}),
],
external: [
...Object.keys(pkg.dependencies || {}),
...Object.keys(pkg.peerDependencies || {}),
],
};