Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@antv/layout",
"version": "2.0.0",
"version": "2.0.1",
"description": "graph layout algorithm",
"main": "dist/index.min.js",
"module": "lib/index.js",
Expand All @@ -16,12 +16,14 @@
"import": "./lib/worker.js",
"default": "./dist/worker.js"
},
"./esm/*": "./esm/*",
"./lib/*": "./lib/*"
},
"files": [
"src",
"package.json",
"dist",
"esm",
"lib",
"LICENSE",
"README.md"
Expand Down Expand Up @@ -97,7 +99,7 @@
"build:watch": "rollup -c --watch",
"build": "npm run clean && rollup -c && npm run size",
"ci": "npm run build && npm run test",
"clean": "rimraf dist lib",
"clean": "rimraf dist lib esm",
"dev": "vite",
"prepublishOnly": "npm run build",
"publish:alpha": "npm publish --tag alpha",
Expand Down
111 changes: 66 additions & 45 deletions rollup.config.mjs
Original file line number Diff line number Diff line change
@@ -1,15 +1,41 @@
import typescript from '@rollup/plugin-typescript';
import resolve from '@rollup/plugin-node-resolve';
import fs from 'node:fs';
import path from 'node:path';
import commonjs from '@rollup/plugin-commonjs';
import dts from 'rollup-plugin-dts';
import resolve from '@rollup/plugin-node-resolve';
import terser from '@rollup/plugin-terser';
import typescript from '@rollup/plugin-typescript';
import dts from 'rollup-plugin-dts';

const packageJson = JSON.parse(
fs.readFileSync(new URL('./package.json', import.meta.url), 'utf8'),
);

const externalPackages = [
...Object.keys(packageJson.dependencies ?? {}),
...Object.keys(packageJson.peerDependencies ?? {}),
...Object.keys(packageJson.optionalDependencies ?? {}),
];

const isExternal = (id) =>
!id.startsWith('.') &&
!path.isAbsolute(id) &&
externalPackages.some((pkg) => id === pkg || id.startsWith(`${pkg}/`));

const createPlugins = () => [
resolve({
browser: true,
extensions: ['.mjs', '.js', '.json', '.ts'],
}),
commonjs(),
typescript({
tsconfig: './tsconfig.rollup.json',
declaration: false,
}),
];

// 主库配置
const mainConfig = {
const umdConfig = {
input: 'src/index.ts',
output: [
// UMD 格式
{
file: 'dist/index.js',
format: 'umd',
Expand All @@ -23,61 +49,60 @@ const mainConfig = {
sourcemap: true,
plugins: [terser()],
},
// ESM 格式
],
plugins: createPlugins(),
};

const esmConfig = {
input: 'src/index.ts',
output: [
{
dir: 'lib',
format: 'esm',
sourcemap: true,
preserveModules: true,
preserveModulesRoot: 'src',
}
],
plugins: [
resolve(),
commonjs(),
typescript({
tsconfig: './tsconfig.rollup.json',
declaration: false,
}),
},
{
dir: 'esm',
format: 'esm',
sourcemap: true,
preserveModules: true,
preserveModulesRoot: 'src',
},
],
external: isExternal,
plugins: createPlugins(),
};

// Worker ESM
const workerESMConfig = {
input: 'src/worker.ts',
output: {
file: 'lib/worker.js',
format: 'esm',
sourcemap: true,
},
plugins: [
resolve(),
commonjs(),
typescript({
tsconfig: './tsconfig.rollup.json',
declaration: false,
}),
output: [
{
file: 'lib/worker.js',
format: 'esm',
sourcemap: true,
},
{
file: 'esm/worker.js',
format: 'esm',
sourcemap: true,
},
],
external: isExternal,
plugins: createPlugins(),
};

// Worker IIFE
const workerIIFEConfig = {
input: 'src/worker.ts',
output: {
file: 'dist/worker.js',
format: 'iife',
sourcemap: true,
name: 'LayoutWorker',
plugins: [terser()], // 压缩 Worker
plugins: [terser()],
},
plugins: [
resolve(),
commonjs(),
typescript({
tsconfig: './tsconfig.rollup.json',
declaration: false,
}),
],
plugins: createPlugins(),
};

const dtsConfig = {
Expand All @@ -88,12 +113,8 @@ const dtsConfig = {
preserveModules: true,
preserveModulesRoot: 'src',
},
external: isExternal,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Since this PR introduces the esm directory as a distribution target (and exposes it in package.json exports), the TypeScript declaration files (.d.ts) should also be generated for the esm directory. Currently, dtsConfig only outputs to lib, which will cause TypeScript compilation errors for consumers importing from @antv/layout/esm/* due to missing type definitions. Please update the output property of dtsConfig to be an array containing both lib and esm outputs, similar to esmConfig.

plugins: [dts({ tsconfig: './tsconfig.rollup.json' })],
};

export default [
mainConfig,
workerESMConfig,
workerIIFEConfig,
dtsConfig,
];
export default [umdConfig, esmConfig, workerESMConfig, workerIIFEConfig, dtsConfig];
Loading