Skip to content

Commit 3a03771

Browse files
committed
Update dependencies in package.json and pnpm-lock.yaml, enhance auto-import feature with TypeScript definitions, and improve Webpack integration to avoid type conflicts. Add counter functionality to HomePage component in playground.
1 parent b64dd32 commit 3a03771

File tree

5 files changed

+42
-25
lines changed

5 files changed

+42
-25
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
"@pmmmwh/react-refresh-webpack-plugin": "0.6.1",
7373
"react": "^19.2.0",
7474
"react-dom": "^19.2.0",
75-
"unplugin-auto-import": "19.1.1"
75+
"unplugin-auto-import": "20.2.0"
7676
},
7777
"peerDevDependencies": {
7878
"@winner-fed/winjs": "*"

playground/src/pages/index.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,22 @@ import Smileurl, { ReactComponent as SvgSmile } from '../../smile.svg';
22
import winjsJpeg from '../assets/winjs.jpeg';
33

44
export default function HomePage() {
5+
const [count, setCount] = useState(0);
6+
7+
useEffect(() => {
8+
console.log('Count changed:', count);
9+
}, [count]);
10+
511
return (
612
<div>
713
<h2>Hi! Welcome to WinJS!</h2>
14+
<p>计数: {count}</p>
15+
<button onClick={() => setCount(count + 1)}>增加</button>
816
<p>
917
<img src={winjsJpeg} width="388" />
1018
</p>
1119
<p>
12-
<img src={Smileurl} alt="" />
20+
<img src={Smileurl} alt="smile" />
1321
<SvgSmile />
1422
</p>
1523
<p>

pnpm-lock.yaml

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

src/features/autoImport/README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export default function Counter() {
6666

6767
模块通过拦截不同打包器的配置钩子,注入 `unplugin-auto-import` 插件:
6868

69-
- **Webpack**: 通过 `api.modifyWebpackConfig` 注入
69+
- **Webpack**: 通过 `api.chainWebpack` 注入(使用 webpack-chain 避免类型冲突)
7070
- **Vite**: 通过 `api.modifyViteConfig` 注入
7171
- **Rsbuild**: 通过 `api.modifyRsbuildConfig` 修改 `tools.rspack` 配置注入
7272

@@ -75,3 +75,13 @@ export default function Counter() {
7575
- `unplugin-auto-import/vite`
7676
- `unplugin-auto-import/rspack`
7777

78+
### 关键技术点
79+
80+
1. **Webpack 类型兼容性**:由于 WinJS 使用编译后的 webpack 类型,直接使用 `modifyWebpackConfig` 会导致类型冲突。因此使用 `chainWebpack` 和 webpack-chain 来添加插件,避免类型问题。
81+
82+
2. **自动生成文件**:启用 `dts: true``eslintrc.enabled: true` 后,会自动生成:
83+
- `auto-imports.d.ts` - TypeScript 全局类型声明
84+
- `.eslintrc-auto-import.json` - ESLint 全局变量配置
85+
86+
3. **动态配置**:根据 `api.userConfig.mpa` 判断是否为 MPA 模式,动态决定是否导入 React Router API。
87+

src/features/autoImport/autoImport.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,16 @@ export default (api: IApi) => {
5858

5959
return {
6060
imports,
61-
dts: false, // WinJS 会处理类型定义
61+
dts: true,
6262
eslintrc: {
63-
enabled: false,
63+
enabled: true,
6464
},
6565
};
6666
};
6767

68-
// Webpack 集成
69-
api.modifyWebpackConfig((config) => {
70-
config.plugins = config.plugins || [];
71-
config.plugins.push(AutoImportWebpack(getAutoImportConfig()));
68+
// Webpack 集成 - 使用 chainWebpack 避免类型冲突
69+
api.chainWebpack((config) => {
70+
config.plugin('auto-import').use(AutoImportWebpack(getAutoImportConfig()));
7271
return config;
7372
});
7473

0 commit comments

Comments
 (0)