@elora-cloud/elora-cli
Version:
elora build cli 前端打包脚手架
62 lines (59 loc) • 1.72 kB
JavaScript
import { rollup } from 'rollup';
import { EloraPluginAlias } from '../plugins/elora-plugin-alias.mjs';
import { EloraPluginStyle } from '../plugins/elora-plugin-style.mjs';
import scss from '../plugins/rollup-plugin-scss.mjs';
import '../utils/process.mjs';
import '../utils/paths.mjs';
import '../utils/pkg.mjs';
import { writeBundles } from '../utils/rollup.mjs';
async function EloraBuildStyle(options) {
const { input, packageName } = options;
const bundle = await rollup({
input,
plugins: [EloraPluginAlias({ packageName }), EloraPluginStyle({ packageName })],
external: (id) => {
if (id.endsWith('.scss'))
return true;
return false;
},
});
await writeBundles(bundle, [
// esm
{
format: 'es',
dir: 'es',
entryFileNames: '[name].mjs',
preserveModules: true,
preserveModulesRoot: 'src',
},
// cjs
{
format: 'cjs',
dir: 'lib',
entryFileNames: '[name].js',
preserveModules: true,
preserveModulesRoot: 'src',
},
]);
}
async function EloraBundleStyle(option) {
const { input, fileName = '[name]' } = option;
const bundle = await rollup({
input,
plugins: [
scss({
style: 'compressed', // 压缩输出的CSS
fileName: 'style.css',
}),
],
});
await writeBundles(bundle, [
// cjs
{
format: 'cjs',
dir: 'dist',
entryFileNames: `${fileName}.js`,
},
]);
}
export { EloraBuildStyle, EloraBundleStyle };