rollup-plugin-condition-exports
auto setup main/module/typings/exports/typesVersions
install
pnpm i rollup-plugin-condition-exportsusage
import commonjs from '@rollup/plugin-commonjs'
import typescript from 'rollup-plugin-typescript2'
+import ce from 'rollup-plugin-condition-exports'
import { defineConfig } from 'rollup'
export default defineConfig([
{
input: ['src/index.ts', 'src/do-something'],
plugins: [
typescript(), // so Rollup can convert TypeScript to JavaScript
commonjs(),
+ ce(),
],
output: [
{ dir: 'cjs', format: 'cjs' },
{ dir: 'es', entryFileNames: '[name].mjs', format: 'es' },
],
},
])👇 will setup fields in package
{
"exports": {
".": {
"import": "./dist/index.mjs",
"require": "./dist/index.cjs",
"types": "./dist/index.d.ts",
},
"./do-something": {
"import": "./dist/do-something/index.mjs",
"require": "./dist/do-something/index.cjs",
"types": "./dist/do-something/index.d.ts",
},
"./package.json": "./package.json",
},
"main": "dist/index.cjs",
"module": "dist/index.mjs",
"types": "dist/index.d.ts",
"typesVersions": {
"*": {
"do-something": [
"dist/do-something/index.d.ts",
],
},
},
}see examples from more details
options
package.json main/module/typings/exports/typesVersions fields controlled by follows options.
exportsformation will be[dir]/[name].[ext]typesVersionsformation will be[dir|types.dir]/[name].d.tsmain/module/typesformation will be[dir]/index.[ext], only working if index name exit
types: boolean | { dirs: string }
enable setup typesVersions field.
names: string[]
default infer from rollup bundle info
formats: ['cjs', 'es']
default infer from rollup options, enable/disable exports.require or exports.import
dirs: string | { cjs: string, es: string }
default infer from rollup bundle info
exts: string | { cjs: string, es: string }
bundle file extname
glob: string[]
useful for like react-components project, get all exports module name by fast-glob's patterns
base: string
replace prefix string of glob result.
disabledFields: string[]
force disable some fields, regardless of other settings
development
- Setup -
pnpm i - Build -
pnpm build
built with ❤️ by 😼