UNPKG

lbundle

Version:

Small zero-configuration bundler build on top of Rollup.js and SWC for NPM libraries

55 lines (52 loc) 2.22 kB
import { rollup } from 'rollup'; import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import { swc } from 'rollup-plugin-swc3'; import { typescriptPaths } from 'rollup-plugin-typescript-paths'; import PeerDepsExternalPlugin from 'rollup-plugin-peer-deps-external'; import json from '@rollup/plugin-json'; import { getSwcConfig } from './get-swc-config.mjs'; import { jsExtensions } from '../constants/js-extensions.mjs'; import { isNil, isEmptyArray, isString, isStringFull } from '../utils/checks.mjs'; import typescript from '@rollup/plugin-typescript'; import { getRollupTypescriptConfig } from './get-rollup-typescript-config.mjs'; import { stylesExtensions } from '../constants/styles-extensions.mjs'; import { getRollupStylerPlugin } from './get-rollup-styler-plugin.mjs'; const bundleLibIfNeeded = async (ctx)=>{ const { pkg, options, libOutputs, pkgPath, resolvedSource } = ctx; if (isNil(resolvedSource) || isEmptyArray(libOutputs)) return; await Promise.all(libOutputs.map(async (output)=>{ const bundle = await rollup({ input: resolvedSource, plugins: [ PeerDepsExternalPlugin({ includeDependencies: true, packageJsonPath: pkgPath }), typescriptPaths({ preserveExtensions: true }), json(), swc({ ...getSwcConfig(ctx, output), tsconfig: ctx.tsconfigPath ?? false }), commonjs({ extensions: jsExtensions }), nodeResolve({ rootDir: options.cwd, extensions: [ ...jsExtensions, ...stylesExtensions ] }), getRollupStylerPlugin(ctx), isString(pkg.types) && isStringFull(pkg.types) && typescript(getRollupTypescriptConfig(ctx)) ] }); await bundle.write(output); })); }; export { bundleLibIfNeeded }; //# sourceMappingURL=bundle-lib-if-needed.mjs.map