x-view-model
Version:
A lightweight, type-safe MVVM state management solution for React applications. Features reactive updates, computed properties, and deep path selection with minimal bundle size.
92 lines (87 loc) • 1.96 kB
JavaScript
import typescript from "rollup-plugin-typescript2";
import peerDepsExternal from "rollup-plugin-peer-deps-external";
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import json from "@rollup/plugin-json";
import dts from "rollup-plugin-dts";
import { terser } from "rollup-plugin-terser";
const extensions = [".js", ".jsx", ".ts", ".tsx", ".scss"];
process.env.BABEL_ENV = "production";
function setUpRollup({ input, output, minify = false }) {
return {
input,
exports: "named",
output: {
...output,
sourcemap: true,
},
watch: {
include: "*",
exclude: "node_modules/**",
},
plugins: [
peerDepsExternal(),
json(),
resolve({
extensions,
preferBuiltins: true,
}),
commonjs({
include: /node_modules/,
}),
typescript({
useTsconfigDeclarationDir: true,
tsconfigOverride: {
compilerOptions: {
declaration: true,
declarationDir: "lib/types",
},
},
}),
...(minify ? [terser()] : []),
],
external: ["react", "react-dom"],
};
}
export default [
// ESM (unminified)
setUpRollup({
input: "./src/index.ts",
output: {
file: "lib/index.esm.js",
format: "esm",
},
}),
// ESM (minified)
setUpRollup({
input: "./src/index.ts",
output: {
file: "lib/index.esm.min.js",
format: "esm",
},
minify: true,
}),
// CJS (unminified)
setUpRollup({
input: "./src/index.ts",
output: {
file: "lib/index.js",
format: "cjs",
},
}),
// CJS (minified)
setUpRollup({
input: "./src/index.ts",
output: {
file: "lib/index.min.js",
format: "cjs",
},
minify: true,
}),
// Type definitions
{
input: "src/index.ts",
output: [{ file: "lib/index.d.ts", format: "cjs" }],
plugins: [dts()],
},
];