lbundle
Version:
Small zero-configuration bundler build on top of Rollup.js and SWC for NPM libraries
59 lines (56 loc) • 2.46 kB
JavaScript
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 { allAssetExtensions } from '../constants/asset-extensions.mjs';
import { getRollupStylerPlugin } from './get-rollup-styler-plugin.mjs';
import { getRollupAssetPlugins } from './get-rollup-asset-plugins.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(),
...getRollupAssetPlugins(),
swc({
...getSwcConfig(ctx, output),
tsconfig: ctx.tsconfigPath ?? false
}),
commonjs({
extensions: jsExtensions
}),
nodeResolve({
rootDir: options.cwd,
extensions: [
...jsExtensions,
...stylesExtensions,
...allAssetExtensions
]
}),
getRollupStylerPlugin(ctx),
isString(pkg.types) && isStringFull(pkg.types) && typescript(getRollupTypescriptConfig(ctx))
]
});
await bundle.write(output);
}));
};
export { bundleLibIfNeeded };
//# sourceMappingURL=bundle-lib-if-needed.mjs.map