Skip to content

Commit 1c5d956

Browse files
committed
docs: 优化 docs 项目打包,减少包体积,修复若干 bug
- 升级 rollup 以及相关 plugins 版本,用于解决 build:umd 时 souceMap 失败的问题 - 增加 visualizer 包用于分析打包产物 - 修复 model 中 width/height/radius 等 properties 传 0 无效的 bug - docs 中 global.ts 中依赖加载通过 import 引入,之前通过 require 引入会导致 tree-shaking 失效
1 parent 8cd2e37 commit 1c5d956

File tree

11 files changed

+1552
-689
lines changed

11 files changed

+1552
-689
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ lib
66
es
77
dist
88
output
9+
stats.html
910

1011
coverage
1112
types/**

examples/demo.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@
6464
// 渲染实例
6565
lf.render(data)
6666

67+
// 获取图数据。可以对比一下输入和输出数据的不同
68+
// 如果有 adapterIn 和 adaptOut 方法,则通过 lf.getGraphData 获取经过 adapterOut 处理过的数据
69+
const graphData = lf.getGraphRawData()
70+
console.log('graph data --->>>', graphData)
71+
6772
console.log('Core --->>>', Core)
6873
console.log('Extension --->>>', Extension)
6974
</script>

package.json

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,6 @@
7171
],
7272
"author": "Logicflow-Team",
7373
"license": "Apache-2.0",
74-
"dependencies": {
75-
"lodash-es": "^4.17.21"
76-
},
7774
"devDependencies": {
7875
"@babel/core": "^7.22.8",
7976
"@babel/plugin-proposal-decorators": "^7.22.10",
@@ -91,7 +88,7 @@
9188
"@rollup/plugin-commonjs": "^23.0.5",
9289
"@rollup/plugin-node-resolve": "^15.0.1",
9390
"@rollup/plugin-replace": "^5.0.1",
94-
"@rollup/plugin-terser": "^0.2.0",
91+
"@rollup/plugin-terser": "^0.4.4",
9592
"@rollup/plugin-typescript": "^10.0.1",
9693
"@types/jest": "^29.5.5",
9794
"@types/lodash-es": "^4.17.12",
@@ -117,10 +114,11 @@
117114
"prettier": "^3.0.2",
118115
"pretty-quick": "^3.1.3",
119116
"rimraf": "^5.0.7",
120-
"rollup": "^3.7.4",
121-
"rollup-plugin-filesize": "^9.1.1",
117+
"rollup": "^4.21.0",
118+
"rollup-plugin-filesize": "^10.0.0",
122119
"rollup-plugin-polyfill-node": "^0.12.0",
123120
"rollup-plugin-postcss": "^4.0.2",
121+
"rollup-plugin-visualizer": "^5.12.0",
124122
"run-shared-scripts": "^1.1.5",
125123
"stylelint": "^15.10.3",
126124
"stylelint-config-prettier": "^9.0.5",

packages/vue-node-registry/src/model.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import LogicFlow, { HtmlNodeModel } from '@logicflow/core'
2-
import { cloneDeep } from 'lodash-es'
2+
import { cloneDeep, isNil } from 'lodash-es'
33

44
export type CustomProperties = {
55
// 形状属性
@@ -18,21 +18,20 @@ export type CustomProperties = {
1818

1919
export class VueNodeModel extends HtmlNodeModel {
2020
setAttributes() {
21-
// TODO: 解决 width、height、radius 为 0 时的问题
21+
// DONE: 解决 width、height、radius 为 0 时的问题
2222
const { width, height, radius } = this.properties as CustomProperties
23-
if (width) {
23+
if (!isNil(width)) {
2424
this.width = width
2525
}
26-
if (height) {
26+
if (!isNil(height)) {
2727
this.height = height
2828
}
29-
if (radius) {
29+
if (!isNil(radius)) {
3030
this.radius = radius
3131
}
3232
}
3333

3434
getTextStyle(): LogicFlow.TextNodeTheme {
35-
// const { x, y, width, height } = this
3635
const {
3736
refX = 0,
3837
refY = 0,

pnpm-lock.yaml

Lines changed: 1469 additions & 635 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rollup.config.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@ import fs from 'node:fs'
33
import path from 'node:path'
44
import { startCase, camelCase } from 'lodash'
55
import colors from 'colors/safe'
6-
import fileSize from 'rollup-plugin-filesize'
76
import babel from '@rollup/plugin-babel'
87
import alias from '@rollup/plugin-alias'
98
import terser from '@rollup/plugin-terser'
109
import replace from '@rollup/plugin-replace'
1110
import commonjs from '@rollup/plugin-commonjs'
1211
import resolve from '@rollup/plugin-node-resolve'
1312
import typescript from '@rollup/plugin-typescript'
13+
import fileSize from 'rollup-plugin-filesize'
1414
import nodePolyfills from 'rollup-plugin-polyfill-node'
15+
import { visualizer } from 'rollup-plugin-visualizer'
1516

1617
export function formatName(name) {
1718
const realName = name
@@ -76,9 +77,13 @@ export function rollupConfig(config = {}) {
7677
output: outputs,
7778
plugins: [
7879
babel({ babelHelpers: 'bundled' }),
79-
typescript({ declaration: false }),
8080
resolve(),
8181
commonjs(),
82+
typescript({
83+
declaration: false,
84+
sourceMap: true,
85+
inlineSources: true,
86+
}),
8287
replace({
8388
preventAssignment: true,
8489
'process.env.NODE_ENV': JSON.stringify('production'),
@@ -93,8 +98,13 @@ export function rollupConfig(config = {}) {
9398
}),
9499
nodePolyfills(),
95100
terser({
101+
format: {
102+
comments: false,
103+
},
104+
compress: {
105+
drop_console: true,
106+
},
96107
sourceMap: true,
97-
// drop_console: true,
98108
}),
99109
fileSize({
100110
reporter: [
@@ -141,6 +151,7 @@ export function rollupConfig(config = {}) {
141151
],
142152
}),
143153
...plugins,
154+
visualizer(),
144155
],
145156
external,
146157
...others,

sites/docs/.dumi/global.ts

Lines changed: 46 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,51 @@
11
/**
22
* 挂载到全局
33
*/
4+
const asyncImport = async () => {
5+
const LogicFlow = await import('@logicflow/core');
6+
const Extension = await import('@logicflow/extension');
7+
const ReactNodeRegistry = await import('@logicflow/react-node-registry');
8+
9+
(window as any).react = await import('react');
10+
(window as any).reactDom = await import('react-dom');
11+
(window as any).createRoot = await import('react-dom/client').then(
12+
(m) => m.createRoot,
13+
);
14+
15+
(window as any).insertCSS = await import('insert-css');
16+
(window as any).antd = await import('antd');
17+
(window as any).DownOutlined = await import('@ant-design/icons').then(
18+
(m) => m.DownOutlined,
19+
);
20+
21+
(window as any).LogicFlow = LogicFlow.default;
22+
(window as any).Extension = Extension;
23+
24+
(window as any).BaseNode = LogicFlow.BaseNode;
25+
(window as any).BaseNodeModel = LogicFlow.BaseNodeModel;
26+
(window as any).CircleNodeModel = LogicFlow.CircleNodeModel;
27+
(window as any).CircleNode = LogicFlow.CircleNode;
28+
(window as any).h = LogicFlow.h;
29+
(window as any).RectNode = LogicFlow.RectNode;
30+
(window as any).RectNodeModel = LogicFlow.RectNodeModel;
31+
(window as any).PolygonNode = LogicFlow.PolygonNode;
32+
(window as any).PolygonNodeModel = LogicFlow.PolygonNodeModel;
33+
(window as any).HtmlNode = LogicFlow.HtmlNode;
34+
(window as any).EllipseNode = LogicFlow.EllipseNode;
35+
(window as any).EllipseNodeModel = LogicFlow.EllipseNodeModel;
36+
(window as any).HtmlNodeModel = LogicFlow.HtmlNodeModel;
37+
(window as any).PolylineEdge = LogicFlow.PolylineEdge;
38+
(window as any).PolylineEdgeModel = LogicFlow.PolylineEdgeModel;
39+
(window as any).BezierEdgeModel = LogicFlow.BezierEdgeModel;
40+
(window as any).BezierEdge = LogicFlow.BezierEdge;
41+
(window as any).GraphModel = LogicFlow.GraphModel;
42+
43+
(window as any).CurvedEdge = Extension.CurvedEdge;
44+
(window as any).CurvedEdgeModel = Extension.CurvedEdgeModel;
45+
(window as any).register = ReactNodeRegistry.register;
46+
(window as any).Portal = ReactNodeRegistry.Portal;
47+
};
48+
449
if (window) {
5-
(window as any).react = require('react');
6-
(window as any).reactDom = require('react-dom');
7-
(window as any).createRoot = require('react-dom/client').createRoot;
8-
(window as any).antd = require('antd');
9-
(window as any).insertCSS = require('insert-css');
10-
(window as any).LogicFlow = require('@logicflow/core').default;
11-
(window as any).Extension = require('@logicflow/extension');
12-
(window as any).BaseNode = require('@logicflow/core').BaseNode;
13-
(window as any).BaseNodeModel = require('@logicflow/core').BaseNodeModel;
14-
(window as any).CircleNodeModel = require('@logicflow/core').CircleNodeModel;
15-
(window as any).CircleNode = require('@logicflow/core').CircleNode;
16-
(window as any).h = require('@logicflow/core').h;
17-
(window as any).RectNode = require('@logicflow/core').RectNode;
18-
(window as any).RectNodeModel = require('@logicflow/core').RectNodeModel;
19-
(window as any).PolygonNode = require('@logicflow/core').PolygonNode;
20-
(window as any).PolygonNodeModel =
21-
require('@logicflow/core').PolygonNodeModel;
22-
(window as any).HtmlNode = require('@logicflow/core').HtmlNode;
23-
(window as any).EllipseNode = require('@logicflow/core').EllipseNode;
24-
(window as any).EllipseNodeModel =
25-
require('@logicflow/core').EllipseNodeModel;
26-
(window as any).HtmlNodeModel = require('@logicflow/core').HtmlNodeModel;
27-
(window as any).PolylineEdge = require('@logicflow/core').PolylineEdge;
28-
(window as any).PolylineEdgeModel =
29-
require('@logicflow/core').PolylineEdgeModel;
30-
(window as any).BezierEdgeModel = require('@logicflow/core').BezierEdgeModel;
31-
(window as any).BezierEdge = require('@logicflow/core').BezierEdge;
32-
(window as any).GraphModel = require('@logicflow/core').GraphModel;
33-
(window as any).DownOutlined = require('@ant-design/icons').DownOutlined;
34-
(window as any).CurvedEdge = require('@logicflow/extension').CurvedEdge;
35-
(window as any).CurvedEdgeModel =
36-
require('@logicflow/extension').CurvedEdgeModel;
37-
(window as any).register = require('@logicflow/react-node-registry').register;
38-
(window as any).Portal = require('@logicflow/react-node-registry').Portal;
50+
asyncImport();
3951
}

sites/docs/.dumirc.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,7 @@ export default defineConfig({
422422
libraryDirectory: 'es',
423423
style: true,
424424
},
425+
'antd',
425426
],
426427
// 下面的 @ant-design/icons 和 lodash-es 需要按需加载,但目前看来不起作用(或者是起作用了,就那么大。需要确认下)
427428
[

sites/docs/package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,8 @@
3636
"@logicflow/react-node-registry": "workspace:*",
3737
"antd": "^5.4.0",
3838
"insert-css": "^2.0.0",
39-
"lottie-web": "^5.12.2",
40-
"rc-util": "^5.43.0",
41-
"react": "18.2.0"
39+
"react": "18.2.0",
40+
"react-dom": "18.2.0"
4241
},
4342
"repository": "https://github.com/didi/LogicFlow",
4443
"browserslist": [

sites/docs/tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@
1111
"@@/*": [".dumi/tmp/*"]
1212
}
1313
},
14-
"exclude": ["examples"],
14+
"exclude": ["examples/**/*.tsx"],
1515
"include": [".dumirc.ts", "src/**/*"]
1616
}

0 commit comments

Comments
 (0)