Skip to content

Commit 9b6ade8

Browse files
authored
Merge pull request #182 from TreeTreeDi/master
fix(ko): #180 add immer and react-grid-layout to babel transpile for legacy browser
2 parents 13d7119 + 6175dd1 commit 9b6ade8

5 files changed

Lines changed: 66 additions & 3 deletions

File tree

.changeset/happy-beans-speak.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'ko': patch
3+
---
4+
5+
fix(ko): #180 add babel rule for monaco deps to support Chrome 66

packages/ko/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
},
4343
"dependencies": {
4444
"@babel/core": "^7.18.0",
45+
"core-js": "^3.30.0",
4546
"@dtinsight/auto-polyfills-webpack-plugin": "workspace:2.0.0",
4647
"@nuxt/friendly-errors-webpack-plugin": "^2.5.2",
4748
"@parcel/css": "^1.12.2",

packages/ko/src/webpack/index.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,13 @@ class WebpackConfig {
9797
}),
9898
].filter(Boolean),
9999
extensions: this.extensions,
100-
alias,
100+
alias: {
101+
...alias,
102+
// 只 alias core-js v3 的 modules 路径,不影响 v2 的 library 路径
103+
'core-js/modules': require
104+
.resolve('core-js')
105+
.replace(/\/index\.js$/, '/modules'),
106+
},
101107
fallback: {
102108
fs: false,
103109
path: false,

packages/ko/src/webpack/loaders/script.ts

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,59 @@ class Script {
2222
inline: 'fallback',
2323
},
2424
},
25+
// Monaco worker 依赖专用规则(注入 corejs 兼容 chrome 66)
2526
{
2627
test: /\.m?(t|j)sx?$/,
2728
include: (input: string) => {
29+
return (
30+
input.includes('monaco-sql-languages') ||
31+
input.includes('dt-sql-parser') ||
32+
input.includes('antlr4ng') ||
33+
input.includes('antlr4-c3')
34+
);
35+
},
36+
use: [
37+
{
38+
loader: require.resolve('babel-loader'),
39+
options: {
40+
presets: [
41+
[
42+
require.resolve('@babel/preset-env'),
43+
{
44+
useBuiltIns: 'usage',
45+
corejs: 3,
46+
targets: 'chrome >= 66',
47+
},
48+
],
49+
[require.resolve('@babel/preset-typescript')],
50+
],
51+
babelrc: false,
52+
configFile: false,
53+
cacheDirectory: true,
54+
cacheCompression: false,
55+
},
56+
},
57+
],
58+
},
59+
{
60+
test: /\.m?(t|j)sx?$/,
61+
include: (input: string) => {
62+
if (
63+
input.includes('monaco-sql-languages') ||
64+
input.includes('dt-sql-parser') ||
65+
input.includes('antlr4ng') ||
66+
input.includes('antlr4-c3')
67+
) {
68+
return false;
69+
}
2870
// internal modules dt-common compatible
2971
if (/node_modules[\\/]dt-common[\\/]src[\\/]/.test(input)) {
3072
return true;
31-
} else if (input.includes('antlr4-c3')) {
73+
} else if (input.includes('immer')) {
74+
return true;
75+
} else if (input.includes('react-grid-layout')) {
3276
return true;
33-
} else if (input.includes('antlr4ng')) {
77+
} else if (input.includes('monaco-editor')) {
3478
return true;
3579
} else if (input.includes('node_modules')) {
3680
return false;

pnpm-lock.yaml

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

0 commit comments

Comments
 (0)