Update rollup

With rollup's preserveModules option and the sideEffects flag in
package.json, now we have the power of tree shaking.
This commit is contained in:
Yanzhen Yu
2026-04-01 12:00:00 +08:00
parent dcad6ff922
commit 4209ea7fe8
4 changed files with 19 additions and 24 deletions

View File

@@ -18,8 +18,9 @@
"rrweb"
],
"main": "lib/rrweb.js",
"module": "es/rrweb.js",
"module": "es/rrweb/src/index.js",
"unpkg": "dist/rrweb.js",
"sideEffects": false,
"typings": "typings/index.d.ts",
"files": [
"dist",
@@ -45,7 +46,7 @@
"jest-snapshot": "^23.6.0",
"mocha": "^5.2.0",
"puppeteer": "^1.11.0",
"rollup": "^0.66.6",
"rollup": "^2.3.3",
"rollup-plugin-commonjs": "^9.2.0",
"rollup-plugin-node-resolve": "^3.4.0",
"rollup-plugin-postcss": "^1.6.2",

View File

@@ -98,22 +98,11 @@ for (const c of baseConfigs) {
configs.push({
input: c.input,
plugins,
preserveModules: true,
output: [
{
format: 'esm',
file: c.pathFn(pkg.module),
},
],
});
// ES module + minify
configs.push({
input: c.input,
plugins: minifyPlugins,
output: [
{
format: 'esm',
file: toMinPath(c.pathFn(pkg.module)),
sourcemap: true,
dir: 'es/rrweb',
},
],
});

View File

@@ -3,17 +3,20 @@ import * as path from 'path';
import * as puppeteer from 'puppeteer';
import { assertSnapshot, launchPuppeteer } from './utils';
import { Suite } from 'mocha';
import { recordOptions } from '../src/types';
import { recordOptions, eventWithTime } from '../src/types';
interface ISuite extends Suite {
code: string;
browser: puppeteer.Browser;
}
describe('record integration tests', function(this: ISuite) {
describe('record integration tests', function (this: ISuite) {
this.timeout(10_000);
const getHtml = (fileName: string, options: recordOptions = {}): string => {
const getHtml = (
fileName: string,
options: recordOptions<eventWithTime> = {},
): string => {
const filePath = path.resolve(__dirname, `./html/${fileName}`);
const html = fs.readFileSync(filePath, 'utf8');
return html.replace(

View File

@@ -24,13 +24,15 @@ interface ISuite extends Suite {
interface IWindow extends Window {
rrweb: {
record: (options: recordOptions) => listenerHandler | undefined;
record: (
options: recordOptions<eventWithTime>,
) => listenerHandler | undefined;
addCustomEvent<T>(tag: string, payload: T): void;
};
emit: (e: eventWithTime) => undefined;
}
describe('record', function(this: ISuite) {
describe('record', function (this: ISuite) {
before(async () => {
this.browser = await launchPuppeteer();
@@ -58,7 +60,7 @@ describe('record', function(this: ISuite) {
this.events.push(e);
});
page.on('console', msg => console.log('PAGE LOG:', msg.text()));
page.on('console', (msg) => console.log('PAGE LOG:', msg.text()));
});
afterEach(async () => {
@@ -223,14 +225,14 @@ describe('record', function(this: ISuite) {
});
await this.page.waitFor(10);
const styleSheetRuleEvents = this.events.filter(
e =>
(e) =>
e.type === EventType.IncrementalSnapshot &&
e.data.source === IncrementalSource.StyleSheetRule,
);
const addRuleCount = styleSheetRuleEvents.filter(e =>
const addRuleCount = styleSheetRuleEvents.filter((e) =>
Boolean((e.data as styleSheetRuleData).adds),
).length;
const removeRuleCount = styleSheetRuleEvents.filter(e =>
const removeRuleCount = styleSheetRuleEvents.filter((e) =>
Boolean((e.data as styleSheetRuleData).removes),
).length;
// sync insert/delete should be ignored