Skip to content

Commit

Permalink
ref(build): Handle minification in rollup config generation function (#…
Browse files Browse the repository at this point in the history
…4681)

As part of the new build process, this removes minification config from being hardcoded in individual `rollup.config.js` files and instead uses a new function in the main `rollup.config.js` to generate minified and unminified variants of each build config it's given. 

This also includes a few other small changes:

- Moved the license plugin to the main config function.
- Removed exports which were no longer necessary now that most config is centralized.
- Refactored individual `rollup.config.js` files to have more parallel structure.
- Moved a comment and renamed the `markAsBrowserBulid` plugin so it has the work "plugin" in its name.
  • Loading branch information
lobsterkatie committed Mar 7, 2022
1 parent 61c79ef commit a1e97ea
Show file tree
Hide file tree
Showing 6 changed files with 152 additions and 228 deletions.
26 changes: 3 additions & 23 deletions packages/browser/rollup.config.js
Original file line number Diff line number Diff line change
@@ -1,37 +1,17 @@
import { makeBaseBundleConfig, makeLicensePlugin, terserPlugin } from '../../rollup.config';
import { makeBaseBundleConfig, makeMinificationVariants } from '../../rollup.config';

const builds = [];

const licensePlugin = makeLicensePlugin();

['es5', 'es6'].forEach(jsVersion => {
const baseBundleConfig = makeBaseBundleConfig({
input: 'src/index.ts',
isAddOn: false,
jsVersion,
licenseTitle: '@sentry/browser',
outputFileBase: `build/bundle${jsVersion === 'es6' ? '.es6' : ''}`,
});

builds.push(
...[
{
...baseBundleConfig,
output: {
...baseBundleConfig.output,
file: `${baseBundleConfig.output.file}.js`,
},
plugins: [...baseBundleConfig.plugins, licensePlugin],
},
{
...baseBundleConfig,
output: {
...baseBundleConfig.output,
file: `${baseBundleConfig.output.file}.min.js`,
},
plugins: [...baseBundleConfig.plugins, terserPlugin, licensePlugin],
},
],
);
builds.push(...makeMinificationVariants(baseBundleConfig));
});

export default builds;
58 changes: 19 additions & 39 deletions packages/integrations/rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,45 +2,25 @@ import * as fs from 'fs';

import commonjs from '@rollup/plugin-commonjs';

import { makeBaseBundleConfig, terserPlugin } from '../../rollup.config';

function allIntegrations() {
return fs.readdirSync('./src').filter(file => file != 'index.ts');
}

function loadAllIntegrations() {
const builds = [];

allIntegrations().forEach(file => {
const baseBundleConfig = makeBaseBundleConfig({
input: `src/${file}`,
isAddOn: true,
jsVersion: 'es5',
outputFileBase: `build/${file.replace('.ts', '')}`,
});

[
{
extension: '.js',
plugins: [...baseBundleConfig.plugins, commonjs()],
},
{
extension: '.min.js',
plugins: [...baseBundleConfig.plugins, commonjs(), terserPlugin],
},
].forEach(build => {
builds.push({
...baseBundleConfig,
output: {
...baseBundleConfig.output,
file: `${baseBundleConfig.output.file}${build.extension}`,
},
plugins: build.plugins,
});
});
import { insertAt, makeBaseBundleConfig, makeMinificationVariants } from '../../rollup.config';

const builds = [];

const integrationSourceFiles = fs.readdirSync('./src').filter(file => file != 'index.ts');

integrationSourceFiles.forEach(file => {
const baseBundleConfig = makeBaseBundleConfig({
input: `src/${file}`,
isAddOn: true,
jsVersion: 'es5',
licenseTitle: '@sentry/integrations',
outputFileBase: `build/${file.replace('.ts', '')}`,
});

return builds;
}
// TODO We only need `commonjs` for localforage (used in the offline plugin). Once that's fixed, this can come out.
baseBundleConfig.plugins = insertAt(baseBundleConfig.plugins, -2, commonjs());

builds.push(...makeMinificationVariants(baseBundleConfig));
});

export default loadAllIntegrations();
export default builds;
26 changes: 3 additions & 23 deletions packages/tracing/rollup.config.js
Original file line number Diff line number Diff line change
@@ -1,37 +1,17 @@
import { makeBaseBundleConfig, makeLicensePlugin, terserPlugin } from '../../rollup.config';
import { makeBaseBundleConfig, makeMinificationVariants } from '../../rollup.config';

const builds = [];

const licensePlugin = makeLicensePlugin('@sentry/tracing & @sentry/browser');

['es5', 'es6'].forEach(jsVersion => {
const baseBundleConfig = makeBaseBundleConfig({
input: 'src/index.bundle.ts',
isAddOn: false,
jsVersion,
licenseTitle: '@sentry/tracing & @sentry/browser',
outputFileBase: `build/bundle.tracing${jsVersion === 'es6' ? '.es6' : ''}`,
});

builds.push(
...[
{
...baseBundleConfig,
output: {
...baseBundleConfig.output,
file: `${baseBundleConfig.output.file}.js`,
},
plugins: [...baseBundleConfig.plugins, licensePlugin],
},
{
...baseBundleConfig,
output: {
...baseBundleConfig.output,
file: `${baseBundleConfig.output.file}.min.js`,
},
plugins: [...baseBundleConfig.plugins, terserPlugin, licensePlugin],
},
],
);
builds.push(...makeMinificationVariants(baseBundleConfig));
});

export default builds;
24 changes: 3 additions & 21 deletions packages/vue/rollup.config.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,11 @@
import { makeBaseBundleConfig, makeLicensePlugin, terserPlugin } from '../../rollup.config';

const licensePlugin = makeLicensePlugin();
import { makeBaseBundleConfig, makeMinificationVariants } from '../../rollup.config';

const baseBundleConfig = makeBaseBundleConfig({
input: 'src/index.bundle.ts',
isAddOn: false,
jsVersion: 'es5',
licenseTitle: '@sentry/vue',
outputFileBase: 'build/bundle.vue',
});

export default [
{
...baseBundleConfig,
output: {
...baseBundleConfig.output,
file: `${baseBundleConfig.output.file}.js`,
},
plugins: [...baseBundleConfig.plugins, licensePlugin],
},
{
...baseBundleConfig,
output: {
...baseBundleConfig.output,
file: `${baseBundleConfig.output.file}.min.js`,
},
plugins: [...baseBundleConfig.plugins, terserPlugin, licensePlugin],
},
];
export default makeMinificationVariants(baseBundleConfig);
29 changes: 3 additions & 26 deletions packages/wasm/rollup.config.js
Original file line number Diff line number Diff line change
@@ -1,34 +1,11 @@
import { makeBaseBundleConfig, terserPlugin } from '../../rollup.config';
import { makeBaseBundleConfig, makeMinificationVariants } from '../../rollup.config';

const baseBundleConfig = makeBaseBundleConfig({
input: 'src/index.ts',
isAddOn: true,
jsVersion: 'es5',
licenseTitle: '@sentry/wasm',
outputFileBase: 'build/wasm',
});

function loadAllIntegrations() {
const builds = [];
[
{
extension: '.js',
plugins: baseBundleConfig.plugins,
},
{
extension: '.min.js',
plugins: [...baseBundleConfig.plugins, terserPlugin],
},
].forEach(build => {
builds.push({
...baseBundleConfig,
output: {
...baseBundleConfig.output,
file: `${baseBundleConfig.output.file}${build.extension}`,
},
plugins: build.plugins,
});
});
return builds;
}

export default loadAllIntegrations();
export default makeMinificationVariants(baseBundleConfig);

0 comments on commit a1e97ea

Please sign in to comment.