mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-05-31 10:24:07 +03:00
80 lines
2.3 KiB
JavaScript
80 lines
2.3 KiB
JavaScript
const path = require('path');
|
|
const { terser: rollupTerser } = require('rollup-plugin-terser');
|
|
const {
|
|
rollupBabel,
|
|
rollupTs,
|
|
rollupCommonjs,
|
|
rollupResolve,
|
|
rollupAlias,
|
|
rollupScss,
|
|
rollupLicense,
|
|
} = require('./plugins');
|
|
|
|
const moduleFormats = ['es', 'esm', 'module'];
|
|
const createMinifiedOutput = (baseOutput) => ({
|
|
...baseOutput,
|
|
compact: true,
|
|
file: baseOutput.file.replace('.js', '.min.js'),
|
|
sourcemap: false,
|
|
plugins: [
|
|
...(baseOutput.plugins || []),
|
|
rollupTerser({
|
|
ecma: baseOutput.generatedCode === 'es2015' ? 2015 : 5,
|
|
safari10: true,
|
|
compress: {
|
|
evaluate: false,
|
|
module: moduleFormats.includes(baseOutput.format),
|
|
passes: 3,
|
|
},
|
|
}),
|
|
],
|
|
});
|
|
|
|
module.exports = (resolve, options) => {
|
|
const { rollup, paths, versions, alias, extractStyles, banner } = options;
|
|
const { output: rollupOutput, input, plugins = [], ...rollupOptions } = rollup;
|
|
const { name, file, globals, exports, sourcemap: rawSourcemap, ...outputConfig } = rollupOutput;
|
|
const { dist: distPath } = paths;
|
|
const sourcemap = rawSourcemap;
|
|
|
|
return versions
|
|
.map(({ format, generatedCode, file: filePathOverride, outputSuffix, minifiedVersion }) => {
|
|
const needsGlobals = format === 'umd' || format === 'iife';
|
|
const filePath = path.resolve(distPath, `${file}${outputSuffix || ''}.js`);
|
|
|
|
const baseOutput = {
|
|
...outputConfig,
|
|
...(needsGlobals && {
|
|
name,
|
|
globals,
|
|
exports,
|
|
}),
|
|
sourcemap,
|
|
format,
|
|
generatedCode,
|
|
file: typeof filePathOverride === 'function' ? filePathOverride(filePath) : filePath,
|
|
plugins: (outputConfig.plugins || []).filter(Boolean),
|
|
};
|
|
const output = [baseOutput, minifiedVersion && createMinifiedOutput(baseOutput)].filter(
|
|
Boolean
|
|
);
|
|
|
|
return {
|
|
input,
|
|
output,
|
|
...rollupOptions,
|
|
plugins: [
|
|
rollupLicense(banner, sourcemap),
|
|
rollupAlias(alias),
|
|
rollupScss(resolve, sourcemap, extractStyles, false),
|
|
rollupTs(input),
|
|
rollupResolve(resolve),
|
|
rollupCommonjs(sourcemap, resolve),
|
|
rollupBabel(resolve, generatedCode === 'es2015'),
|
|
...plugins,
|
|
].filter(Boolean),
|
|
};
|
|
})
|
|
.flat();
|
|
};
|