Skip to content

Commit 1504e2b

Browse files
authored
chore: webpack 5 (#3894)
1 parent b5ccbd4 commit 1504e2b

File tree

9 files changed

+46
-40
lines changed

9 files changed

+46
-40
lines changed

antd-tools/getWebpackConfig.js

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ injectRequire();
33
const path = require('path');
44
const webpack = require('webpack');
55
const WebpackBar = require('webpackbar');
6-
const webpackMerge = require('webpack-merge');
6+
const { merge } = require('webpack-merge');
77
const TerserPlugin = require('terser-webpack-plugin');
88
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
99
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
@@ -39,6 +39,7 @@ function getWebpackConfig(modules) {
3939
babelConfig.plugins.push(require.resolve('./replaceLib'));
4040
}
4141

42+
/** @type {import('webpack').Configuration} */
4243
const config = {
4344
devtool: 'source-map',
4445

@@ -65,21 +66,20 @@ function getWebpackConfig(modules) {
6566
alias: {
6667
'@': process.cwd(),
6768
},
69+
fallback: [
70+
'child_process',
71+
'cluster',
72+
'dgram',
73+
'dns',
74+
'fs',
75+
'module',
76+
'net',
77+
'readline',
78+
'repl',
79+
'tls',
80+
].reduce((acc, name) => Object.assign({}, acc, { [name]: false }), {}),
6881
},
6982

70-
node: [
71-
'child_process',
72-
'cluster',
73-
'dgram',
74-
'dns',
75-
'fs',
76-
'module',
77-
'net',
78-
'readline',
79-
'repl',
80-
'tls',
81-
].reduce((acc, name) => Object.assign({}, acc, { [name]: 'empty' }), {}),
82-
8383
module: {
8484
noParse: [/moment.js/],
8585
rules: [
@@ -219,7 +219,7 @@ All rights reserved.
219219
};
220220

221221
// Development
222-
const uncompressedConfig = webpackMerge({}, config, {
222+
const uncompressedConfig = merge({}, config, {
223223
entry: {
224224
[distFileBaseName]: entry,
225225
},
@@ -232,7 +232,7 @@ All rights reserved.
232232
});
233233

234234
// Production
235-
const prodConfig = webpackMerge({}, config, {
235+
const prodConfig = merge({}, config, {
236236
entry: {
237237
[`${distFileBaseName}.min`]: entry,
238238
},

components/breadcrumb/BreadcrumbItem.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { defineComponent, HTMLAttributes, inject } from 'vue';
1+
import { defineComponent, inject } from 'vue';
22
import PropTypes from '../_util/vue-types';
33
import { hasProp, getComponent, getSlot } from '../_util/props-util';
44
import { defaultConfigProvider } from '../config-provider';
@@ -24,7 +24,7 @@ export default defineComponent({
2424
* if overlay is have
2525
* Wrap a DropDown
2626
*/
27-
renderBreadcrumbNode(breadcrumbItem: HTMLAttributes, prefixCls: string) {
27+
renderBreadcrumbNode(breadcrumbItem: JSX.Element, prefixCls: string) {
2828
const overlay = getComponent(this, 'overlay');
2929
if (overlay) {
3030
return (
@@ -45,7 +45,7 @@ export default defineComponent({
4545
const prefixCls = getPrefixCls('breadcrumb', customizePrefixCls);
4646
const separator = getComponent(this, 'separator');
4747
const children = getSlot(this);
48-
let link: HTMLAttributes;
48+
let link: JSX.Element;
4949
if (hasProp(this, 'href')) {
5050
link = <a class={`${prefixCls}-link`}>{children}</a>;
5151
} else {

components/modal/Modal.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import addEventListener from '../vc-util/Dom/addEventListener';
1313
import { getConfirmLocale } from './locale';
1414
import CloseOutlined from '@ant-design/icons-vue/CloseOutlined';
1515
import Button from '../button';
16-
import buttonTypes, { ButtonType, ButtonProps } from '../button/buttonTypes';
16+
import buttonTypes, { ButtonType, ButtonProps as ButtonPropsType } from '../button/buttonTypes';
1717
import LocaleReceiver from '../locale-provider/LocaleReceiver';
1818
import { getComponent, getSlot } from '../_util/props-util';
1919
import initDefaultProps from '../_util/props-util/initDefaultProps';
@@ -79,8 +79,8 @@ const modalProps = {
7979
maskClosable: PropTypes.looseBool,
8080
/** 强制渲染 Modal*/
8181
forceRender: PropTypes.looseBool,
82-
okButtonProps: PropTypes.shape(ButtonProps),
83-
cancelButtonProps: PropTypes.shape(ButtonProps),
82+
okButtonProps: PropTypes.shape(buttonTypes),
83+
cancelButtonProps: PropTypes.shape(buttonTypes),
8484
destroyOnClose: PropTypes.looseBool,
8585
wrapClassName: PropTypes.string,
8686
maskTransitionName: PropTypes.string,
@@ -107,8 +107,8 @@ export interface ModalFuncProps {
107107
// TODO: find out exact types
108108
onOk?: (...args: any[]) => any;
109109
onCancel?: (...args: any[]) => any;
110-
okButtonProps?: ButtonProps;
111-
cancelButtonProps?: ButtonProps;
110+
okButtonProps?: ButtonPropsType;
111+
cancelButtonProps?: ButtonPropsType;
112112
centered?: boolean;
113113
width?: string | number;
114114
okText?: VNodeTypes;
@@ -194,6 +194,7 @@ export default defineComponent({
194194
loading: confirmLoading,
195195
...(this.okButtonProps || {}),
196196
};
197+
197198
return (
198199
<div>
199200
<Button {...cancelBtnProps}>

components/transfer/list.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import Checkbox from '../checkbox';
77
import Search from './search';
88
import defaultRenderList from './renderListBody';
99
import triggerEvent from '../_util/triggerEvent';
10-
import { defineComponent, HTMLAttributes, nextTick, VNode } from 'vue';
10+
import { defineComponent, nextTick, VNode, VNodeTypes } from 'vue';
1111
import { RadioChangeEvent } from '../radio/interface';
1212

1313
const defaultRender = () => null;
@@ -173,7 +173,7 @@ export default defineComponent({
173173

174174
let listBody = bodyDom;
175175
if (!listBody) {
176-
let bodyNode: HTMLAttributes;
176+
let bodyNode: VNodeTypes;
177177
const { onEvents } = splitAttrs(this.$attrs);
178178
const { bodyContent, customize } = renderListNode(renderList, {
179179
...this.$props,

components/vc-select/SelectTrigger.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ export interface SelectTriggerProps {
6464
empty: boolean;
6565
getTriggerDOMNode: () => any;
6666
}
67+
6768
const SelectTrigger = defineComponent<SelectTriggerProps, { popupRef: any }>({
6869
name: 'SelectTrigger',
6970
inheritAttrs: false,
@@ -136,6 +137,7 @@ const SelectTrigger = defineComponent<SelectTriggerProps, { popupRef: any }>({
136137
);
137138
},
138139
});
140+
139141
SelectTrigger.props = {
140142
dropdownAlign: PropTypes.object,
141143
visible: PropTypes.looseBool,
@@ -155,4 +157,5 @@ SelectTrigger.props = {
155157
direction: PropTypes.string,
156158
getTriggerDOMNode: PropTypes.func,
157159
};
160+
158161
export default SelectTrigger;

components/vc-select/Selector/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import useLock from '../hooks/useLock';
1717
import { defineComponent, VNodeChild } from 'vue';
1818
import createRef, { RefObject } from '../../_util/createRef';
1919
import PropTypes from '../../_util/vue-types';
20+
import { VueNode } from 'ant-design-vue/es/_util/type';
2021

2122
export interface InnerSelectorProps {
2223
prefixCls: string;
@@ -52,7 +53,7 @@ export interface SelectorProps {
5253
mode: Mode;
5354
searchValue: string;
5455
activeValue: string;
55-
inputElement: JSX.Element;
56+
inputElement: VueNode;
5657

5758
autofocus?: boolean;
5859
accessibilityIndex: number;

components/vc-select/generate.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1293,11 +1293,11 @@ export default function generateSelector<
12931293
dropdownClassName={dropdownClassName}
12941294
direction={direction}
12951295
dropdownMatchSelectWidth={dropdownMatchSelectWidth}
1296-
dropdownRender={dropdownRender}
1296+
dropdownRender={dropdownRender as any}
12971297
dropdownAlign={dropdownAlign}
12981298
getPopupContainer={getPopupContainer}
12991299
empty={!mergedOptions.length}
1300-
getTriggerDOMNode={() => selectorDomRef.current as any}
1300+
getTriggerDOMNode={() => selectorDomRef.current}
13011301
>
13021302
<Selector
13031303
{...this.$props}

package.json

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@
2828
"vetur"
2929
],
3030
"scripts": {
31-
"dev": "webpack-dev-server",
32-
"start": "cross-env NODE_ENV=development webpack-dev-server --config webpack.config.js",
31+
"dev": "webpack serve",
3332
"test": "cross-env NODE_ENV=test WORKFLOW=true jest --config .jest.js",
3433
"test:dev": "cross-env NODE_ENV=test jest --config .jest.js",
3534
"compile": "node antd-tools/cli/run.js compile",
@@ -95,10 +94,10 @@
9594
"@vue/eslint-config-prettier": "^6.0.0",
9695
"@vue/eslint-config-typescript": "^7.0.0",
9796
"@vue/test-utils": "^2.0.0-0",
97+
"@webpack-cli/serve": "^1.3.1",
9898
"acorn": "^7.0.0",
9999
"autoprefixer": "^9.6.0",
100100
"axios": "^0.21.0",
101-
"babel-core": "^7.0.0-bridge.0",
102101
"babel-eslint": "^10.0.1",
103102
"babel-jest": "^26.1.0",
104103
"babel-loader": "^8.0.0",
@@ -130,7 +129,7 @@
130129
"gulp-babel": "^8.0.0",
131130
"gulp-strip-code": "^0.1.4",
132131
"gulp-typescript": "^6.0.0-alpha.1",
133-
"html-webpack-plugin": "^3.2.0",
132+
"html-webpack-plugin": "^5.3.1",
134133
"husky": "^4.0.0",
135134
"ignore-emit-webpack-plugin": "^2.0.6",
136135
"istanbul-instrumenter-loader": "^3.0.0",
@@ -176,8 +175,8 @@
176175
"terser-webpack-plugin": "^3.0.3",
177176
"through2": "^3.0.0",
178177
"ts-jest": "^26.4.1",
179-
"ts-loader": "^8.0.2",
180-
"typescript": "^4.0.2",
178+
"ts-loader": "^8.1.0",
179+
"typescript": "^4.2.0",
181180
"umi-mock-middleware": "^1.0.0",
182181
"umi-request": "^1.3.5",
183182
"url-loader": "^3.0.0",
@@ -195,12 +194,12 @@
195194
"vue-server-renderer": "^2.6.11",
196195
"vue-style-loader": "^4.1.2",
197196
"vuex": "^4.0.0-beta.2",
198-
"webpack": "^4.28.4",
197+
"webpack": "^5.0.0",
199198
"webpack-bundle-analyzer": "^4.0.0",
200-
"webpack-cli": "^3.2.1",
199+
"webpack-cli": "^4.6.0",
201200
"webpack-dev-server": "^3.1.14",
202-
"webpack-merge": "^4.1.1",
203-
"webpackbar": "^4.0.0",
201+
"webpack-merge": "^5.0.0",
202+
"webpackbar": "^5.0.0-3",
204203
"xhr-mock": "^2.5.1"
205204
},
206205
"dependencies": {

webpack.config.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ const babelConfig = {
4343
],
4444
};
4545

46+
/** @type {import('webpack').Configuration} */
47+
4648
module.exports = {
4749
mode: 'development',
4850
entry: {
@@ -141,7 +143,7 @@ module.exports = {
141143
hot: true,
142144
open: true,
143145
},
144-
devtool: 'cheap-module-eval-source-map',
146+
devtool: 'inline-cheap-module-source-map',
145147
plugins: [
146148
new MiniCssExtractPlugin({
147149
filename: '[name].css',

0 commit comments

Comments
 (0)