Skip to content

Commit d94ed44

Browse files
authored
Merge pull request #632 from rvsia/antTreeshaking
fix(ant): treeshake ANT mapper
2 parents e9777a6 + 7176b9a commit d94ed44

File tree

6 files changed

+63
-39
lines changed

6 files changed

+63
-39
lines changed

packages/ant-component-mapper/demo/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const App = () => (
2020
componentMapper={componentMapper}
2121
FormTemplate={(props) => <FormTemplate layout='vertical' {...props} />}
2222
onSubmit={console.log}
23-
schema={wizardSchema}
23+
schema={demoSchema}
2424
/>
2525
</div>
2626
);

packages/ant-component-mapper/package.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,18 @@
77
"license": "Apache-2.0",
88
"scripts": {
99
"start": "webpack-dev-server --env dev --config ./config/webpack.config.js --open --hot",
10-
"build": "rollup -c ./rollup.config.js",
10+
"build": "yarn build:cjs && yarn build:esm && yarn build:umd",
11+
"build:cjs": "BABEL_ENV=cjs rollup -c ./rollup.config.js --format=cjs --environment FORMAT:cjs",
12+
"build:esm": "BABEL_ENV=esm rollup -c ./rollup.config.js --format=esm --environment FORMAT:esm",
13+
"build:umd": "rollup -c ./rollup.config.js --format=umd --environment FORMAT:umd",
1114
"vendor": "webpack --env vendor --config ./config/webpack.config.js",
1215
"release": "semantic-release"
1316
},
17+
"files": [
18+
"dist/"
19+
],
1420
"repository": "[email protected]:data-driven-forms/react-forms.git",
1521
"devDependencies": {
16-
"@ant-design/icons": "^4.0.2",
1722
"@babel/core": "^7.1.6",
1823
"@babel/plugin-proposal-class-properties": "^7.2.3",
1924
"@babel/plugin-syntax-dynamic-import": "^7.0.0",

packages/ant-component-mapper/rollup.config.js

Lines changed: 19 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import sourcemaps from 'rollup-plugin-sourcemaps';
1212
import glob from 'glob';
1313
import path from 'path';
1414

15-
const outputPaths = glob.sync(path.resolve(__dirname, './src/components/*.js'));
15+
const outputPaths = glob.sync(path.resolve(__dirname, './src/files/*.js'));
1616

1717
const antExternals = createFilter(
1818
[
@@ -32,7 +32,8 @@ const globals = {
3232
react: 'React',
3333
'react-dom': 'ReactDOM',
3434
'@data-driven-forms/react-form-renderer': '@data-driven-forms/react-form-renderer',
35-
'antd': 'antd'
35+
'antd': 'antd',
36+
'prop-types': 'prop-types'
3637
};
3738

3839
const babelOptions = {
@@ -83,31 +84,19 @@ const plugins = [
8384
sourcemaps()
8485
];
8586

86-
export default [
87-
...['cjs', 'esm'].map((env) => ({
88-
input: ['./src/index.js', ...outputPaths],
89-
output: {
90-
dir: `./dist/${env}`,
91-
format: env,
92-
name: '@data-driven-forms/ant-component-mapper',
93-
exports: 'named',
94-
globals,
95-
sourcemap: true
96-
},
97-
external: antExternals,
98-
plugins
99-
})),
100-
{
101-
input: './src/index.js',
102-
output: {
103-
file: `./dist/umd/index.js`,
104-
format: 'umd',
105-
name: '@data-driven-forms/ant-component-mapper',
106-
exports: 'named',
107-
globals,
108-
sourcemap: true
109-
},
110-
external: antExternals,
111-
plugins
112-
}
113-
];
87+
export default {
88+
input: process.env.FORMAT === 'umd' ? './src/index.js' : ['./src/index.js', ...outputPaths],
89+
output: {
90+
...(process.env.FORMAT === 'umd'
91+
? {
92+
file: `./dist/umd/index.js`
93+
}
94+
: { dir: `./dist/${process.env.FORMAT}` }),
95+
name: '@data-driven-forms/ant-component-mapper',
96+
exports: 'named',
97+
globals,
98+
sourcemap: true
99+
},
100+
external: antExternals,
101+
plugins
102+
};

packages/ant-component-mapper/src/files/component-mapper.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ const componentMapper = {
3939
[componentTypes.PLAIN_TEXT]: PlainText,
4040
[componentTypes.SWITCH]: Switch,
4141
[componentTypes.WIZARD]: Wizard,
42-
[componentTypes.SLIDER]: <div>Not Implemented</div>
42+
[componentTypes.SLIDER]: () => <div>Not Implemented</div>,
43+
[componentTypes.DUAL_LIST_SELECT]: () => <div>Not Implemented</div>,
44+
[componentTypes.FIELD_ARRAY]: () => <div>Not Implemented</div>
4345
};
4446

4547
export default componentMapper;

packages/common/babel.config.js

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ const createMuiTransform = (env) => [
6767
transform: (importName) => (env ? `@material-ui/lab/${env}/${importName}` : `@material-ui/lab/${importName}`),
6868
preventFullImport: false,
6969
skipDefaultConversion: false
70-
},
70+
},
7171
'@material-ui/core': {
7272
transform: (importName) => env ? `@material-ui/core/${env}/${importName}` : `@material-ui/core/${importName}`,
7373
preventFullImport: false,
@@ -98,7 +98,7 @@ const createPfReactTransform = (env) => [
9898
},
9999
preventFullImport: false,
100100
skipDefaultConversion: true
101-
},
101+
},
102102
'@patternfly/react-icons': {
103103
transform: (importName) =>
104104
`@patternfly/react-icons/dist/${env}/icons/${importName
@@ -142,6 +142,32 @@ const createBluePrintTransform = (env) => [
142142
`BLUEPRINT-${env}`
143143
]
144144

145+
const createAntTransform = (env) => [
146+
'transform-imports',
147+
{
148+
'antd': {
149+
transform: (importName) => {
150+
let res;
151+
const files = glob.sync(
152+
path.resolve(__dirname, `../../node_modules/antd/${env === 'cjs' ? 'lib' : 'es' }/${importName.split(/(?=[A-Z])/)
153+
.join('-')
154+
.toLowerCase()}/index.js`)
155+
);
156+
if (files.length > 0) {
157+
res = files[0];
158+
} else {
159+
throw new Error(`File with importName ${importName} does not exist`);
160+
}
161+
162+
res = res.replace(path.resolve(__dirname, '../../node_modules/'), '');
163+
res = res.replace(/^\//, '');
164+
return res;
165+
},
166+
},
167+
},
168+
`ant-${env}`
169+
]
170+
145171
module.exports = {
146172
extends: '../../babel.config.js',
147173
env: {
@@ -150,15 +176,17 @@ module.exports = {
150176
createSuirCJSTransform('commonjs'),
151177
createMuiTransform(),
152178
createPfReactTransform('js'),
153-
createBluePrintTransform('cjs')
179+
createBluePrintTransform('cjs'),
180+
createAntTransform('cjs')
154181
]
155182
},
156183
esm: {
157184
plugins: [
158185
createSuirCJSTransform('es'),
159186
createMuiTransform('esm'),
160187
createPfReactTransform('esm'),
161-
createBluePrintTransform('esm')
188+
createBluePrintTransform('esm'),
189+
createAntTransform('esm')
162190
]
163191
}
164192
}

yarn.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz#480b025f4b20ef7fe8f47d4a4846e4fee84ea06c"
6262
integrity sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ==
6363

64-
"@ant-design/icons@^4.0.2", "@ant-design/icons@^4.2.1":
64+
"@ant-design/icons@^4.2.1":
6565
version "4.2.1"
6666
resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.2.1.tgz#6f3ea5d98ab782072e4e9cbb70f25e4403ae1a6b"
6767
integrity sha512-245ZI40MOr5GGws+sNSiJIRRoEf/J2xvPSMgwRYf3bv8mVGQZ6XTQI/OMeV16KtiSZ3D+mBKXVYSBz2fhigOXQ==

0 commit comments

Comments
 (0)