idraw/scripts/rollup.config.js
2021-07-23 15:41:20 +08:00

107 lines
2.6 KiB
JavaScript

const path = require('path');
const typescript = require('rollup-plugin-typescript2');
const { terser } = require('rollup-plugin-terser');
const cleanup = require('rollup-plugin-cleanup');
const { nodeResolve } = require('@rollup/plugin-node-resolve');
const { getTargetPackage } = require('./config');
const dtsPlugin = require('./util/dts-plugin');
const stylePlugin = require('./util/style-plugin');
// const cleanPlugin = require('./util/clean-plugin');
const resolveFile = function(names = []) {
return path.join(__dirname, '..', 'packages', ...names)
}
const targetMod = process.argv[5];
const packages = getTargetPackage(targetMod);
const modules = [];
const external = [ '@idraw/types', '@idraw/util', '@idraw/board', '@idraw/core' ];
for(let i = 0; i < packages.length; i++) {
const pkg = packages[i];
modules.push({
input: resolveFile([pkg.dirName, 'src', 'index.ts']),
output: resolveFile([pkg.dirName, 'dist', 'index.global.js']),
name: pkg.globalName,
format: 'iife',
plugins: []
});
modules.push({
input: resolveFile([pkg.dirName, 'src', 'index.ts']),
output: resolveFile([pkg.dirName, 'dist', 'index.cjs.js']),
name: pkg.globalName,
format: 'cjs',
exports: 'default',
// plugins: [dtsPlugin(pkg.dirName),],
plugins: [],
external,
});
modules.push({
input: resolveFile([pkg.dirName, 'src', 'index.ts']),
output: resolveFile([pkg.dirName, 'dist', 'index.es.js']),
name: pkg.globalName,
esModule: true,
format: 'es',
external,
plugins: [dtsPlugin(pkg.dirName),]
});
}
function createConfigItem(params) {
const { input, output, name, format, plugins = [], esModule, exports} = params;
return {
input: input,
output: {
file:output,
format,
name: name,
esModule: esModule === true,
// sourcemap: true,
exports
},
plugins: [
...[
stylePlugin(),
nodeResolve(),
typescript({
tsconfig: path.resolve(__dirname, '..', 'tsconfig.json'),
tsconfigOverride: {}
}),
],
...plugins,
...[
// cleanPlugin({
// sourcemap: process.env.NODE_ENV === 'development',
// }),
// terser({
// output: {
// beautify: true,
// // comments: false,
// // indent_level: 2,
// // quote_style: 3,
// }
// })
cleanup({
comments: 'none',
}),
]
],
};
}
function createDevConfig(mods) {
const configs = mods.map((mod) => {
return createConfigItem(mod);
});
return configs;
}
module.exports = createDevConfig(modules);