Converted @rollup/html to a standalone package (out of the original monorepo) and made it ESM-native
This commit is contained in:
80
rollup.config.mjs
Normal file
80
rollup.config.mjs
Normal file
@@ -0,0 +1,80 @@
|
||||
import {readFileSync} from "node:fs";
|
||||
import {builtinModules} from "node:module";
|
||||
import {resolve, join} from "node:path";
|
||||
|
||||
import nodeResolve from "@rollup/plugin-node-resolve";
|
||||
import babelPlugin from "@rollup/plugin-babel";
|
||||
import deletePlugin from "rollup-plugin-delete";
|
||||
|
||||
|
||||
/**
|
||||
* Create a base rollup config
|
||||
* @param {Record<string,any>} pkg Imported package.json
|
||||
* @param {string[]} external Imported package.json
|
||||
* @returns {import('rollup').RollupOptions}
|
||||
*/
|
||||
export function createConfig({ pkg, external = [] }) {
|
||||
const commonOpts = {
|
||||
extensions: ['.js', '.mjs', '.jsx', '.ts', '.tsx'],
|
||||
exclude: 'node_modules/**',
|
||||
};
|
||||
|
||||
return {
|
||||
input: 'src/index.ts',
|
||||
external: Object.keys(pkg.dependencies || {})
|
||||
.concat(Object.keys(pkg.peerDependencies || {}))
|
||||
.concat(builtinModules)
|
||||
.concat(external),
|
||||
onwarn: (warning) => {
|
||||
throw Object.assign(new Error(), warning);
|
||||
},
|
||||
strictDeprecations: true,
|
||||
output: [
|
||||
{
|
||||
format: 'cjs',
|
||||
file: pkg.main,
|
||||
exports: 'named',
|
||||
footer: 'module.exports = Object.assign(exports.default, exports);',
|
||||
sourcemap: true
|
||||
},
|
||||
{
|
||||
format: 'es',
|
||||
file: pkg.module,
|
||||
plugins: [emitModulePackageFile()],
|
||||
sourcemap: true
|
||||
}
|
||||
],
|
||||
plugins: [
|
||||
deletePlugin({
|
||||
targets: join('./dist','*'),
|
||||
runOnce: true,
|
||||
}),
|
||||
nodeResolve({
|
||||
...commonOpts,
|
||||
browser: true,
|
||||
}),
|
||||
babelPlugin({
|
||||
...commonOpts,
|
||||
babelHelpers: "bundled",
|
||||
}),
|
||||
// typescript({ sourceMap: true })]
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
export function emitModulePackageFile() {
|
||||
return {
|
||||
name: 'emit-module-package-file',
|
||||
generateBundle() {
|
||||
this.emitFile({
|
||||
type: 'asset',
|
||||
fileName: 'package.json',
|
||||
source: `{"type":"module"}`
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export default createConfig({
|
||||
pkg: JSON.parse(readFileSync(new URL('./package.json', import.meta.url), 'utf8'))
|
||||
});
|
||||
Reference in New Issue
Block a user