xeira
Version:
One Web Dev stack tool to rule them all
93 lines (77 loc) • 2.23 kB
JavaScript
import json from '@rollup/plugin-json'
import {babel} from '@rollup/plugin-babel'
import externals from 'rollup-plugin-node-externals'
import {nodeResolve} from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
import scss from 'rollup-plugin-postcss'
import autoprefixer from 'autoprefixer'
import {rollupBanner} from './commons/banner.mjs'
import {getDynamicImportOptions} from './commons/dynImports.mjs'
import { getRollupPluginForResolvingAliases } from '../../../utils/aliases.mjs'
import { getBabelConfig } from '../../../config/babel.mjs'
async function rollupModulesForCjs(context, pkgJsonPath, pkgJson, input) {
const customBabelConfig= {
exclude: /node_modules/,
/*https://github.com/rollup/plugins/tree/master/packages/babel#babelhelpers*/
// TODO
// context.isAnApp()
// ? 'runtime' https://github.com/rollup/plugins/tree/master/packages/babel#injected-helpers
// : bundled
babelHelpers: 'bundled',
presets: [
["@babel/preset-env", {
bugfixes: true,
loose: true
}],
... context.usesReact
? ['@babel/preset-react']
: []
],
plugins: [
"babel-plugin-transform-import-meta"
]
}
const mergedBabelConfig= await getBabelConfig(context, input, customBabelConfig)
const inputOptions= {
input,
plugins: [
babel(mergedBabelConfig),
commonjs({
esmExternals: true
}),
...getRollupPluginForResolvingAliases(context.pkgPath),
json(),
externals({
packagePath: pkgJsonPath
}),
nodeResolve({
rootDir: context.pkgPath,
exportConditions: ['node'],
}),
scss({
extract: true,
plugins: [
autoprefixer()
],
use: {
sass: {
silenceDeprecations: ['legacy-js-api'],
}
}
})
]
}
const output = context.pkgp(context.getCjsOutput())
const outputs= [
{
...getDynamicImportOptions (context, output),
format: 'cjs',
exports: 'named',
banner: rollupBanner(pkgJson)
}
]
return [inputOptions, outputs]
}
export {
rollupModulesForCjs
}