78
loading...
This website collects cookies to deliver better user experience
mkdir my-ui-library
cd my-ui-library
npm init
"main": "dist/index.js"
npm i --save-dev rollup rollup-plugin-peer-deps-external @rollup/plugin-node-resolve @rollup/plugin-babel @babel/core @babel/preset-env @babel/preset-react @babel/preset-typescript @babel/plugin-transform-runtime @babel/runtime @babel/plugin-proposal-class-properties typescript tslib rimraf
"build": "rimraf dist && tsc --emitDeclarationOnly && rollup --config",
"tsc": "tsc"
npm run tsc -- --init
"include": [
"src/**/*.ts",
"src/**/*.tsx"
],
"exclude": [
"node_modules",
"dist"
]
{
"presets": [
"@babel/preset-env",
"@babel/preset-typescript",
"@babel/preset-react"
],
"plugins": [
"@babel/proposal-class-properties",
"@babel/proposal-object-rest-spread"
]
}
import babel from "@rollup/plugin-babel";
import resolve from "@rollup/plugin-node-resolve";
import peerDepsExternal from 'rollup-plugin-peer-deps-external';
import pkg from "./package.json";
// Array of extensions to be handled by babel
const EXTENSIONS = [".ts", ".tsx"];
// Excluded dependencies - dev dependencies
const EXTERNAL = Object.keys(pkg.devDependencies);
export default {
input: ["src/index.ts"], // What files we build?
output: {
dir: "dist", // Directory where rollup.js will put the built files
sourcemap: true, // We want a source map to trace the original code
format: "esm", // Built files will follow ES Module format
preserveModules: true // This one is important for treeshaking features of our library
},
plugins: [
peerDepsExternal(), // https://rollupjs.org/guide/en/#peer-dependencies
resolve(), // Resolves node modules
babel({
extensions: EXTENSIONS, // Compile our TypeScript files
babelHelpers: "runtime", // EDIT(2021-11-18): "inline" is not recommended. Please see the details in https://github.com/kraftdorian/react-ts-rollup-starter-lib/issues/1
include: EXTENSIONS.map(ext => `src/**/*${ext}`),
plugins: ["@babel/plugin-transform-runtime"]
})
],
external: EXTERNAL // https://rollupjs.org/guide/en/#peer-dependencies
};
// @/src/index.ts
const Component = () => {};
export default Component;
npm run build