104 lines
2.4 KiB
JavaScript
104 lines
2.4 KiB
JavaScript
import bundleSize from "@atomico/rollup-plugin-sizes"
|
|
import nodeResolve from "@rollup/plugin-node-resolve"
|
|
import replace from "@rollup/plugin-replace"
|
|
import esbuild from "rollup-plugin-esbuild"
|
|
import license from "rollup-plugin-license"
|
|
import { visualizer } from "rollup-plugin-visualizer"
|
|
import fs from "fs"
|
|
import path from "path"
|
|
|
|
const pkg = JSON.parse(fs.readFileSync(path.resolve("./package.json"), "utf-8"))
|
|
|
|
const plugins = (pkg, minify, esbuildOptions = {}) =>
|
|
[
|
|
esbuild({
|
|
minify,
|
|
...esbuildOptions,
|
|
}),
|
|
license({
|
|
banner: `${pkg.name} v${pkg.version} - ${pkg.license}`,
|
|
}),
|
|
bundleSize(),
|
|
visualizer({
|
|
sourcemap: true,
|
|
filename: `stats/${pkg.name}${minify ? "-min" : ""}.html`,
|
|
}),
|
|
nodeResolve(),
|
|
].filter(Boolean)
|
|
|
|
const packageName = pkg.name
|
|
const outputFileName = "medusa-icons"
|
|
const outputDir = "dist"
|
|
const inputs = ["src/components/index.ts"]
|
|
|
|
const bundles = [
|
|
{
|
|
format: "umd",
|
|
inputs,
|
|
outputDir,
|
|
minify: true,
|
|
sourcemap: true,
|
|
},
|
|
{
|
|
format: "cjs",
|
|
inputs,
|
|
outputDir,
|
|
aliasesSupport: true,
|
|
sourcemap: true,
|
|
},
|
|
{
|
|
format: "esm",
|
|
inputs,
|
|
outputDir,
|
|
preserveModules: true,
|
|
aliasesSupport: true,
|
|
sourcemap: true,
|
|
dir: `${outputDir}/esm`, // Update this line
|
|
},
|
|
]
|
|
|
|
const configs = bundles
|
|
.map(
|
|
({ inputs, outputDir, format, minify, preserveModules, aliasesSupport }) =>
|
|
inputs.map((input) => ({
|
|
input,
|
|
plugins: [
|
|
...(!aliasesSupport
|
|
? [
|
|
replace({
|
|
"export * from './aliases';": "",
|
|
"export * as icons from './icons';": "",
|
|
delimiters: ["", ""],
|
|
preventAssignment: false,
|
|
}),
|
|
]
|
|
: []),
|
|
...plugins(pkg, minify),
|
|
],
|
|
external: ["react", "prop-types"],
|
|
output: {
|
|
name: packageName,
|
|
...(preserveModules
|
|
? {
|
|
dir: `${outputDir}/${format}`,
|
|
}
|
|
: {
|
|
file: `${outputDir}/${format}/${outputFileName}${
|
|
minify ? ".min" : ""
|
|
}.js`,
|
|
}),
|
|
format,
|
|
sourcemap: false,
|
|
preserveModules,
|
|
globals: {
|
|
react: "react",
|
|
"prop-types": "PropTypes",
|
|
"react-jsx": "jsx",
|
|
},
|
|
},
|
|
}))
|
|
)
|
|
.flat()
|
|
|
|
export default configs
|