76 lines
1.6 KiB
JavaScript
76 lines
1.6 KiB
JavaScript
const path = require('path');
|
|
const rimraf = require('rimraf');
|
|
const { nodeResolve } = require('@rollup/plugin-node-resolve');
|
|
const { babel } = require('@rollup/plugin-babel');
|
|
const typescript = require('@rollup/plugin-typescript');
|
|
const commonjs = require('@rollup/plugin-commonjs');
|
|
const { terser } = require('rollup-plugin-terser');
|
|
const { DEFAULT_EXTENSIONS } = require('@babel/core');
|
|
|
|
const pkg = require('./package.json');
|
|
|
|
const entryFilePath = path.resolve(__dirname, 'src/index.ts');
|
|
const buildPath = path.resolve(__dirname, 'dist');
|
|
const pkgName = pkg.name;
|
|
|
|
function resolveOutputFilePath(format) {
|
|
return path.resolve(buildPath, format, pkgName + '.js');
|
|
}
|
|
|
|
const extensions = [].concat(DEFAULT_EXTENSIONS, '.ts');
|
|
|
|
const basePlugins = [
|
|
nodeResolve({
|
|
extensions,
|
|
}),
|
|
typescript({}),
|
|
babel({
|
|
extensions,
|
|
babelHelpers: 'runtime',
|
|
}),
|
|
commonjs(),
|
|
];
|
|
|
|
function createConfig(format) {
|
|
const isUmd = format === 'umd';
|
|
const plugins = [].concat(basePlugins);
|
|
|
|
if (isUmd) {
|
|
plugins.push(terser());
|
|
}
|
|
|
|
return {
|
|
input: entryFilePath,
|
|
output: {
|
|
file: resolveOutputFilePath(format),
|
|
format,
|
|
name: pkgName,
|
|
exports: 'default',
|
|
},
|
|
external(id) {
|
|
if (isUmd) {
|
|
return false;
|
|
}
|
|
|
|
return /@babel\/runtime/.test(id);
|
|
},
|
|
plugins,
|
|
};
|
|
}
|
|
|
|
let run;
|
|
const promise = new Promise(function (resolve, reject) {
|
|
run = function (error) {
|
|
if (error) {
|
|
reject(error);
|
|
}
|
|
|
|
resolve([createConfig('esm'), createConfig('cjs'), createConfig('umd')]);
|
|
};
|
|
});
|
|
|
|
module.exports = function () {
|
|
rimraf(buildPath, run);
|
|
return promise;
|
|
};
|