improve build

This commit is contained in:
Rene Haas
2022-08-04 14:35:33 +02:00
parent fa989cabb7
commit 8ac1f57de8
23 changed files with 6751 additions and 1306 deletions
@@ -5,7 +5,10 @@ module.exports = {
{
loose: true,
targets: {
firefox: '54',
chrome: '58',
ie: '11',
esmodules: false,
},
},
],
+5 -10
View File
@@ -68,9 +68,9 @@ const mergeAndResolveOptions = (userOptions) => {
project,
mode: rawMode,
paths: rawPaths = {},
versions: rawVersions = {},
alias: rawAlias = {},
rollup: rawRollup = {},
versions: rawVersions,
extractStyles: rawExtractStyles,
extractTypes: rawExtractTypes,
verbose: rawVerbose,
@@ -85,14 +85,11 @@ const mergeAndResolveOptions = (userOptions) => {
extractTypes: rawExtractTypes ?? defaultExtractTypes,
verbose: rawVerbose ?? defaultVerbose,
banner: rawBanner ?? defaultBanner,
versions: rawVersions ?? defaultVersions,
paths: {
...defaultPaths,
...rawPaths,
},
versions: {
...defaultVersions,
...rawVersions,
},
alias: {
...getWorkspaceAliases(),
...defaultAlias,
@@ -126,8 +123,7 @@ const mergeAndResolveOptions = (userOptions) => {
const createConfig = (userOptions = {}) => {
const options = mergeAndResolveOptions(userOptions);
const { project, mode, versions, extractTypes, extractStyles, verbose } = options;
const { module: buildModuleVersion } = versions;
const { project, mode, extractTypes, extractStyles, verbose } = options;
const isBuild = mode === 'build';
if (verbose) {
@@ -137,12 +133,11 @@ const createConfig = (userOptions = {}) => {
}
if (isBuild) {
const umd = pipelineBuild(resolve, options);
const esm = buildModuleVersion && pipelineBuild(resolve, options, true);
const js = pipelineBuild(resolve, options);
const types = extractTypes && pipelineTypes(resolve, options);
const styles = extractStyles && pipelineStyles(resolve, options);
return [styles, types, umd, esm].flat().filter((build) => !!build);
return [styles, types, js].flat().filter((build) => !!build);
}
return [pipelineDev(resolve, options)];
+14 -4
View File
@@ -9,10 +9,20 @@ module.exports = {
types: './types',
styles: './styles',
},
versions: {
minified: true,
module: true,
},
versions: [
{
format: 'cjs',
generatedCode: 'es2015',
outputSuffix: '.cjs',
minifiedVersion: true,
},
{
format: 'esm',
generatedCode: 'es2015',
outputSuffix: '.esm',
minifiedVersion: true,
},
],
extractStyles: false,
extractTypes: false,
alias: {},
+61 -62
View File
@@ -10,74 +10,73 @@ const {
rollupLicense,
} = require('./pipeline.common.plugins');
const createOutputWithMinifiedVersion = (output, esm, buildMinifiedVersion) =>
[output].concat(
buildMinifiedVersion
? [
{
...output,
compact: true,
file: output.file.replace('.js', '.min.js'),
sourcemap: false,
plugins: [
...(output.plugins || []),
rollupTerser({
ecma: esm ? 2015 : 5,
safari10: true,
compress: {
evaluate: false,
module: !!esm,
passes: 3,
},
}),
],
},
]
: []
);
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, esm) => {
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 { minified: buildMinifiedVersion } = versions;
const { src: srcPath, dist: distPath } = paths;
const sourcemap = rawSourcemap;
const output = createOutputWithMinifiedVersion(
{
...outputConfig,
...(!esm && {
name,
globals,
exports,
}),
sourcemap,
format: esm ? 'esm' : 'umd',
generatedCode: esm ? 'es2015' : 'es5',
file: path.resolve(distPath, `${file}${esm ? '.esm' : ''}.js`),
},
esm,
buildMinifiedVersion
);
return versions
.map(({ format, generatedCode, file: filePathOverride, outputSuffix, minifiedVersion }) => {
const needsGlobals = format === 'umd' || format === 'iife';
const filePath = path.resolve(distPath, `${file}${outputSuffix || ''}.js`);
return {
input,
output,
treeshake: {
propertyReadSideEffects: false,
moduleSideEffects: false,
},
...rollupOptions,
plugins: [
rollupLicense(banner, sourcemap),
rollupAlias(alias),
rollupScss(banner, sourcemap, extractStyles, false),
rollupTs(srcPath),
rollupResolve(srcPath, resolve),
rollupCommonjs(sourcemap, resolve),
rollupBabel(resolve, esm),
...plugins,
].filter(Boolean),
};
const baseOutput = {
...outputConfig,
...(needsGlobals && {
name,
globals,
exports,
}),
sourcemap,
format,
generatedCode,
file: typeof filePathOverride === 'function' ? filePathOverride(filePath) : filePath,
};
const output = [baseOutput, minifiedVersion && createMinifiedOutput(baseOutput)].filter(
Boolean
);
return {
input,
output,
treeshake: {
propertyReadSideEffects: false,
moduleSideEffects: false,
},
...rollupOptions,
plugins: [
rollupLicense(banner, sourcemap),
rollupAlias(alias),
rollupScss(banner, sourcemap, extractStyles, false),
rollupTs(srcPath),
rollupResolve(srcPath, resolve),
rollupCommonjs(sourcemap, resolve),
rollupBabel(resolve, generatedCode === 'es2015'),
...plugins,
].filter(Boolean),
};
})
.flat();
};
+4 -4
View File
@@ -10,8 +10,8 @@ const rollupPluginAlias = require('@rollup/plugin-alias');
const rollupPluginTs = require('rollup-plugin-typescript2');
const { default: rollupPluginEsBuild } = require('rollup-plugin-esbuild');
const rollupPluginLicense = require('rollup-plugin-license');
const babelConfigUmd = require('./babel.config.umd');
const babelConfigEsm = require('./babel.config.esm');
const babelConfigEs5 = require('./babel.config.es5');
const babelConfigEs6 = require('./babel.config.es2015');
module.exports = {
rollupAlias: (aliasEntries) =>
@@ -60,9 +60,9 @@ module.exports = {
target: 'es6',
tsconfig: './tsconfig.json',
}),
rollupBabel: (resolve, esm) =>
rollupBabel: (resolve, es6) =>
rollupBabelInputPlugin({
...(esm ? babelConfigEsm : babelConfigUmd),
...(es6 ? babelConfigEs6 : babelConfigEs5),
assumptions: {
enumerableModuleMeta: false,
constantReexports: true,
@@ -35,10 +35,13 @@ module.exports = (testDir, mode = 'dev', onListening = null) => {
dist,
src: path.resolve(testDir, './'),
},
versions: {
minified: false,
module: false,
},
versions: [
{
format: 'esm',
generatedCode: 'es2015',
minifiedVersion: false,
},
],
extractStyle: false,
rollup: {
input: path.resolve(testDir, meta.input),
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -28,7 +28,7 @@
"types",
"styles"
],
"main": "dist/overlayscrollbars.js",
"main": "dist/overlayscrollbars.cjs.js",
"module": "dist/overlayscrollbars.esm.js",
"types": "types/overlayscrollbars.d.ts",
"scripts": {
@@ -1,3 +1,4 @@
const { dirname, basename, resolve } = require('path');
const { terser: rollupTerser } = require('rollup-plugin-terser');
const { summary } = require('rollup-plugin-summary');
const createRollupConfig = require('@~local/rollup');
@@ -8,6 +9,36 @@ module.exports = createRollupConfig({
verbose: true,
extractStyles: true,
extractTypes: true,
versions: [
{
format: 'cjs',
generatedCode: 'es2015',
outputSuffix: '.cjs',
minifiedVersion: true,
},
{
format: 'esm',
generatedCode: 'es2015',
outputSuffix: '.esm',
minifiedVersion: true,
},
{
format: 'iife',
generatedCode: 'es2015',
outputSuffix: '.browser.es6',
minifiedVersion: true,
file: (originalPath) =>
`${resolve(dirname(originalPath), 'browser', basename(originalPath))}`,
},
{
format: 'iife',
generatedCode: 'es5',
outputSuffix: '.browser.es5',
minifiedVersion: true,
file: (originalPath) =>
`${resolve(dirname(originalPath), 'browser', basename(originalPath))}`,
},
],
banner: `OverlayScrollbars
Version: ${version}