mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-06-22 23:20:37 +03:00
improve build
This commit is contained in:
@@ -5,7 +5,10 @@ module.exports = {
|
|||||||
{
|
{
|
||||||
loose: true,
|
loose: true,
|
||||||
targets: {
|
targets: {
|
||||||
|
firefox: '54',
|
||||||
|
chrome: '58',
|
||||||
ie: '11',
|
ie: '11',
|
||||||
|
esmodules: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@@ -68,9 +68,9 @@ const mergeAndResolveOptions = (userOptions) => {
|
|||||||
project,
|
project,
|
||||||
mode: rawMode,
|
mode: rawMode,
|
||||||
paths: rawPaths = {},
|
paths: rawPaths = {},
|
||||||
versions: rawVersions = {},
|
|
||||||
alias: rawAlias = {},
|
alias: rawAlias = {},
|
||||||
rollup: rawRollup = {},
|
rollup: rawRollup = {},
|
||||||
|
versions: rawVersions,
|
||||||
extractStyles: rawExtractStyles,
|
extractStyles: rawExtractStyles,
|
||||||
extractTypes: rawExtractTypes,
|
extractTypes: rawExtractTypes,
|
||||||
verbose: rawVerbose,
|
verbose: rawVerbose,
|
||||||
@@ -85,14 +85,11 @@ const mergeAndResolveOptions = (userOptions) => {
|
|||||||
extractTypes: rawExtractTypes ?? defaultExtractTypes,
|
extractTypes: rawExtractTypes ?? defaultExtractTypes,
|
||||||
verbose: rawVerbose ?? defaultVerbose,
|
verbose: rawVerbose ?? defaultVerbose,
|
||||||
banner: rawBanner ?? defaultBanner,
|
banner: rawBanner ?? defaultBanner,
|
||||||
|
versions: rawVersions ?? defaultVersions,
|
||||||
paths: {
|
paths: {
|
||||||
...defaultPaths,
|
...defaultPaths,
|
||||||
...rawPaths,
|
...rawPaths,
|
||||||
},
|
},
|
||||||
versions: {
|
|
||||||
...defaultVersions,
|
|
||||||
...rawVersions,
|
|
||||||
},
|
|
||||||
alias: {
|
alias: {
|
||||||
...getWorkspaceAliases(),
|
...getWorkspaceAliases(),
|
||||||
...defaultAlias,
|
...defaultAlias,
|
||||||
@@ -126,8 +123,7 @@ const mergeAndResolveOptions = (userOptions) => {
|
|||||||
|
|
||||||
const createConfig = (userOptions = {}) => {
|
const createConfig = (userOptions = {}) => {
|
||||||
const options = mergeAndResolveOptions(userOptions);
|
const options = mergeAndResolveOptions(userOptions);
|
||||||
const { project, mode, versions, extractTypes, extractStyles, verbose } = options;
|
const { project, mode, extractTypes, extractStyles, verbose } = options;
|
||||||
const { module: buildModuleVersion } = versions;
|
|
||||||
const isBuild = mode === 'build';
|
const isBuild = mode === 'build';
|
||||||
|
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
@@ -137,12 +133,11 @@ const createConfig = (userOptions = {}) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isBuild) {
|
if (isBuild) {
|
||||||
const umd = pipelineBuild(resolve, options);
|
const js = pipelineBuild(resolve, options);
|
||||||
const esm = buildModuleVersion && pipelineBuild(resolve, options, true);
|
|
||||||
const types = extractTypes && pipelineTypes(resolve, options);
|
const types = extractTypes && pipelineTypes(resolve, options);
|
||||||
const styles = extractStyles && pipelineStyles(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)];
|
return [pipelineDev(resolve, options)];
|
||||||
|
|||||||
@@ -9,10 +9,20 @@ module.exports = {
|
|||||||
types: './types',
|
types: './types',
|
||||||
styles: './styles',
|
styles: './styles',
|
||||||
},
|
},
|
||||||
versions: {
|
versions: [
|
||||||
minified: true,
|
{
|
||||||
module: true,
|
format: 'cjs',
|
||||||
},
|
generatedCode: 'es2015',
|
||||||
|
outputSuffix: '.cjs',
|
||||||
|
minifiedVersion: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
format: 'esm',
|
||||||
|
generatedCode: 'es2015',
|
||||||
|
outputSuffix: '.esm',
|
||||||
|
minifiedVersion: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
extractStyles: false,
|
extractStyles: false,
|
||||||
extractTypes: false,
|
extractTypes: false,
|
||||||
alias: {},
|
alias: {},
|
||||||
|
|||||||
@@ -10,74 +10,73 @@ const {
|
|||||||
rollupLicense,
|
rollupLicense,
|
||||||
} = require('./pipeline.common.plugins');
|
} = require('./pipeline.common.plugins');
|
||||||
|
|
||||||
const createOutputWithMinifiedVersion = (output, esm, buildMinifiedVersion) =>
|
const moduleFormats = ['es', 'esm', 'module'];
|
||||||
[output].concat(
|
const createMinifiedOutput = (baseOutput) => ({
|
||||||
buildMinifiedVersion
|
...baseOutput,
|
||||||
? [
|
compact: true,
|
||||||
{
|
file: baseOutput.file.replace('.js', '.min.js'),
|
||||||
...output,
|
sourcemap: false,
|
||||||
compact: true,
|
plugins: [
|
||||||
file: output.file.replace('.js', '.min.js'),
|
...(baseOutput.plugins || []),
|
||||||
sourcemap: false,
|
rollupTerser({
|
||||||
plugins: [
|
ecma: baseOutput.generatedCode === 'es2015' ? 2015 : 5,
|
||||||
...(output.plugins || []),
|
safari10: true,
|
||||||
rollupTerser({
|
compress: {
|
||||||
ecma: esm ? 2015 : 5,
|
evaluate: false,
|
||||||
safari10: true,
|
module: moduleFormats.includes(baseOutput.format),
|
||||||
compress: {
|
passes: 3,
|
||||||
evaluate: false,
|
},
|
||||||
module: !!esm,
|
}),
|
||||||
passes: 3,
|
],
|
||||||
},
|
});
|
||||||
}),
|
|
||||||
],
|
|
||||||
},
|
|
||||||
]
|
|
||||||
: []
|
|
||||||
);
|
|
||||||
|
|
||||||
module.exports = (resolve, options, esm) => {
|
module.exports = (resolve, options) => {
|
||||||
const { rollup, paths, versions, alias, extractStyles, banner } = options;
|
const { rollup, paths, versions, alias, extractStyles, banner } = options;
|
||||||
const { output: rollupOutput, input, plugins = [], ...rollupOptions } = rollup;
|
const { output: rollupOutput, input, plugins = [], ...rollupOptions } = rollup;
|
||||||
const { name, file, globals, exports, sourcemap: rawSourcemap, ...outputConfig } = rollupOutput;
|
const { name, file, globals, exports, sourcemap: rawSourcemap, ...outputConfig } = rollupOutput;
|
||||||
const { minified: buildMinifiedVersion } = versions;
|
|
||||||
const { src: srcPath, dist: distPath } = paths;
|
const { src: srcPath, dist: distPath } = paths;
|
||||||
const sourcemap = rawSourcemap;
|
const sourcemap = rawSourcemap;
|
||||||
|
|
||||||
const output = createOutputWithMinifiedVersion(
|
return versions
|
||||||
{
|
.map(({ format, generatedCode, file: filePathOverride, outputSuffix, minifiedVersion }) => {
|
||||||
...outputConfig,
|
const needsGlobals = format === 'umd' || format === 'iife';
|
||||||
...(!esm && {
|
const filePath = path.resolve(distPath, `${file}${outputSuffix || ''}.js`);
|
||||||
name,
|
|
||||||
globals,
|
|
||||||
exports,
|
|
||||||
}),
|
|
||||||
sourcemap,
|
|
||||||
format: esm ? 'esm' : 'umd',
|
|
||||||
generatedCode: esm ? 'es2015' : 'es5',
|
|
||||||
file: path.resolve(distPath, `${file}${esm ? '.esm' : ''}.js`),
|
|
||||||
},
|
|
||||||
esm,
|
|
||||||
buildMinifiedVersion
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
const baseOutput = {
|
||||||
input,
|
...outputConfig,
|
||||||
output,
|
...(needsGlobals && {
|
||||||
treeshake: {
|
name,
|
||||||
propertyReadSideEffects: false,
|
globals,
|
||||||
moduleSideEffects: false,
|
exports,
|
||||||
},
|
}),
|
||||||
...rollupOptions,
|
sourcemap,
|
||||||
plugins: [
|
format,
|
||||||
rollupLicense(banner, sourcemap),
|
generatedCode,
|
||||||
rollupAlias(alias),
|
file: typeof filePathOverride === 'function' ? filePathOverride(filePath) : filePath,
|
||||||
rollupScss(banner, sourcemap, extractStyles, false),
|
};
|
||||||
rollupTs(srcPath),
|
const output = [baseOutput, minifiedVersion && createMinifiedOutput(baseOutput)].filter(
|
||||||
rollupResolve(srcPath, resolve),
|
Boolean
|
||||||
rollupCommonjs(sourcemap, resolve),
|
);
|
||||||
rollupBabel(resolve, esm),
|
|
||||||
...plugins,
|
return {
|
||||||
].filter(Boolean),
|
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();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ const rollupPluginAlias = require('@rollup/plugin-alias');
|
|||||||
const rollupPluginTs = require('rollup-plugin-typescript2');
|
const rollupPluginTs = require('rollup-plugin-typescript2');
|
||||||
const { default: rollupPluginEsBuild } = require('rollup-plugin-esbuild');
|
const { default: rollupPluginEsBuild } = require('rollup-plugin-esbuild');
|
||||||
const rollupPluginLicense = require('rollup-plugin-license');
|
const rollupPluginLicense = require('rollup-plugin-license');
|
||||||
const babelConfigUmd = require('./babel.config.umd');
|
const babelConfigEs5 = require('./babel.config.es5');
|
||||||
const babelConfigEsm = require('./babel.config.esm');
|
const babelConfigEs6 = require('./babel.config.es2015');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
rollupAlias: (aliasEntries) =>
|
rollupAlias: (aliasEntries) =>
|
||||||
@@ -60,9 +60,9 @@ module.exports = {
|
|||||||
target: 'es6',
|
target: 'es6',
|
||||||
tsconfig: './tsconfig.json',
|
tsconfig: './tsconfig.json',
|
||||||
}),
|
}),
|
||||||
rollupBabel: (resolve, esm) =>
|
rollupBabel: (resolve, es6) =>
|
||||||
rollupBabelInputPlugin({
|
rollupBabelInputPlugin({
|
||||||
...(esm ? babelConfigEsm : babelConfigUmd),
|
...(es6 ? babelConfigEs6 : babelConfigEs5),
|
||||||
assumptions: {
|
assumptions: {
|
||||||
enumerableModuleMeta: false,
|
enumerableModuleMeta: false,
|
||||||
constantReexports: true,
|
constantReexports: true,
|
||||||
|
|||||||
@@ -35,10 +35,13 @@ module.exports = (testDir, mode = 'dev', onListening = null) => {
|
|||||||
dist,
|
dist,
|
||||||
src: path.resolve(testDir, './'),
|
src: path.resolve(testDir, './'),
|
||||||
},
|
},
|
||||||
versions: {
|
versions: [
|
||||||
minified: false,
|
{
|
||||||
module: false,
|
format: 'esm',
|
||||||
},
|
generatedCode: 'es2015',
|
||||||
|
minifiedVersion: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
extractStyle: false,
|
extractStyle: false,
|
||||||
rollup: {
|
rollup: {
|
||||||
input: path.resolve(testDir, meta.input),
|
input: path.resolve(testDir, meta.input),
|
||||||
|
|||||||
+867
-849
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
+379
-358
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
@@ -28,7 +28,7 @@
|
|||||||
"types",
|
"types",
|
||||||
"styles"
|
"styles"
|
||||||
],
|
],
|
||||||
"main": "dist/overlayscrollbars.js",
|
"main": "dist/overlayscrollbars.cjs.js",
|
||||||
"module": "dist/overlayscrollbars.esm.js",
|
"module": "dist/overlayscrollbars.esm.js",
|
||||||
"types": "types/overlayscrollbars.d.ts",
|
"types": "types/overlayscrollbars.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
const { dirname, basename, resolve } = require('path');
|
||||||
const { terser: rollupTerser } = require('rollup-plugin-terser');
|
const { terser: rollupTerser } = require('rollup-plugin-terser');
|
||||||
const { summary } = require('rollup-plugin-summary');
|
const { summary } = require('rollup-plugin-summary');
|
||||||
const createRollupConfig = require('@~local/rollup');
|
const createRollupConfig = require('@~local/rollup');
|
||||||
@@ -8,6 +9,36 @@ module.exports = createRollupConfig({
|
|||||||
verbose: true,
|
verbose: true,
|
||||||
extractStyles: true,
|
extractStyles: true,
|
||||||
extractTypes: 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
|
banner: `OverlayScrollbars
|
||||||
Version: ${version}
|
Version: ${version}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user