Skip to content

Commit c0b9ca9

Browse files
authored
Merge pull request #388 from data-driven-forms/streamline-build-output
[V2] Stream line build output files structure.
2 parents d7f23ff + c2b01e8 commit c0b9ca9

File tree

216 files changed

+1842
-1432
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

216 files changed

+1842
-1432
lines changed

babel.config.js

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,42 @@
1-
const createIconsTransformPlugin = [
2-
'transform-imports',
3-
{
4-
'@patternfly/react-icons': {
5-
transform: (importName) =>
6-
`@patternfly/react-icons/dist/js/icons/${importName.split(/(?=[A-Z])/).join('-').toLowerCase()}`,
7-
preventFullImport: true,
8-
},
9-
},
10-
];
11-
1+
const camelToSnake = (string) => {
2+
return string
3+
.replace(/[\w]([A-Z])/g, function(m) {
4+
return m[0] + '-' + m[1];
5+
})
6+
.toLowerCase();
7+
};
128

139
module.exports = {
14-
"presets": ["@babel/preset-env", "@babel/preset-react"],
15-
"plugins": ["@babel/plugin-syntax-dynamic-import", "lodash", "@babel/plugin-proposal-class-properties", createIconsTransformPlugin ]
10+
presets: ["@babel/preset-env", "@babel/preset-react"],
11+
plugins: ["@babel/plugin-syntax-dynamic-import", "lodash", "@babel/plugin-proposal-class-properties" ],
12+
env: {
13+
cjs: {
14+
plugins: [
15+
[
16+
'transform-imports',
17+
{
18+
'@data-driven-forms/react-form-renderer': {
19+
transform: (importName) => `@data-driven-forms/react-form-renderer/dist/cjs/${camelToSnake(importName)}`,
20+
preventFullImport: true
21+
}
22+
},
23+
'@data-driven-forms/react-form-renderer-CJS'
24+
],
25+
]
26+
},
27+
esm: {
28+
plugins: [
29+
[
30+
'transform-imports',
31+
{
32+
'@data-driven-forms/react-form-renderer': {
33+
transform: (importName) => `@data-driven-forms/react-form-renderer/dist/esm/${camelToSnake(importName)}`,
34+
preventFullImport: true
35+
}
36+
},
37+
'@data-driven-forms/react-form-renderer-ESM'
38+
],
39+
]
40+
}
41+
}
1642
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
"eslint-plugin-prettier": "^3.1.2",
5555
"eslint-plugin-react": "^7.18.3",
5656
"eslint-plugin-react-hooks": "^2.4.0",
57+
"glob": "^7.1.6",
5758
"identity-obj-proxy": "^3.0.0",
5859
"jest": "^24.8.0",
5960
"lerna": "^3.13.1",

packages/common/babel.config.js

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,172 @@
1+
require.extensions['.css'] = () => undefined;
2+
const path = require('path');
3+
const glob = require('glob');
4+
5+
const mapper = {
6+
TextVariants: 'Text',
7+
ButtonVariant: 'Button',
8+
DropdownPosition: 'dropdownConstants',
9+
TextListVariants: 'TextList',
10+
TextListItemVariants: 'TextListItem'
11+
};
12+
113
module.exports = {
214
extends: '../../babel.config.js',
15+
env: {
16+
cjs: {
17+
plugins: [
18+
[
19+
'transform-imports',
20+
{
21+
'@patternfly/react-core': {
22+
transform: (importName) => {
23+
let res;
24+
const files = glob.sync(
25+
path.resolve(__dirname, `../../node_modules/@patternfly/react-core/dist/js/**/${mapper[importName] || importName}.js`)
26+
);
27+
if (files.length > 0) {
28+
res = files[0];
29+
} else {
30+
throw new Error(`File with importName ${importName} does not exist`);
31+
}
32+
33+
res = res.replace(path.resolve(__dirname, '../../node_modules/'), '');
34+
res = res.replace(/^\//, '');
35+
return res;
36+
},
37+
preventFullImport: false,
38+
skipDefaultConversion: true
39+
}
40+
},
41+
'react-core-CJS'
42+
],
43+
[
44+
'transform-imports',
45+
{
46+
'@patternfly/react-icons': {
47+
transform: (importName) =>
48+
`@patternfly/react-icons/dist/js/icons/${importName
49+
.split(/(?=[A-Z])/)
50+
.join('-')
51+
.toLowerCase()}`,
52+
preventFullImport: true
53+
}
54+
},
55+
'react-icons-CJS'
56+
],
57+
[
58+
'transform-imports',
59+
{
60+
'patternfly-react': {
61+
transform: (importName) => {
62+
let res;
63+
const files = glob.sync(path.resolve(__dirname, `../../node_modules/patternfly-react/dist/js/**/${importName}.js`));
64+
if (files.length > 0) {
65+
res = files[0];
66+
} else {
67+
throw new Error(`File with importName ${importName} does not exist`);
68+
}
69+
70+
res = res.replace(path.resolve(__dirname, '../../node_modules/'), '');
71+
res = res.replace(/^\//, '');
72+
return res;
73+
},
74+
preventFullImport: false,
75+
skipDefaultConversion: false
76+
}
77+
},
78+
'pf3-react-CJS'
79+
],
80+
[
81+
'transform-imports',
82+
{
83+
'@material-ui/core': {
84+
transform: (importName) => `@material-ui/core/${importName}`,
85+
preventFullImport: false,
86+
skipDefaultConversion: false
87+
}
88+
},
89+
'MUI-CJS'
90+
]
91+
]
92+
},
93+
esm: {
94+
plugins: [
95+
[
96+
'transform-imports',
97+
{
98+
'@patternfly/react-core': {
99+
transform: (importName) => {
100+
let res;
101+
const files = glob.sync(
102+
path.resolve(__dirname, `../../node_modules/@patternfly/react-core/dist/esm/**/${mapper[importName] || importName}.js`)
103+
);
104+
if (files.length > 0) {
105+
res = files[0];
106+
} else {
107+
throw new Error(`File with importName ${importName} does not exist`);
108+
}
109+
110+
res = res.replace(path.resolve(__dirname, '../../node_modules/'), '');
111+
res = res.replace(/^\//, '');
112+
return res;
113+
},
114+
preventFullImport: false,
115+
skipDefaultConversion: true
116+
}
117+
},
118+
'react-core-ESM'
119+
],
120+
121+
[
122+
'transform-imports',
123+
{
124+
'@patternfly/react-icons': {
125+
transform: (importName) =>
126+
`@patternfly/react-icons/dist/esm/icons/${importName
127+
.split(/(?=[A-Z])/)
128+
.join('-')
129+
.toLowerCase()}`,
130+
preventFullImport: true
131+
}
132+
},
133+
'react-icons-ESM'
134+
],
135+
[
136+
'transform-imports',
137+
{
138+
'patternfly-react': {
139+
transform: (importName) => {
140+
let res;
141+
const files = glob.sync(path.resolve(__dirname, `../../node_modules/patternfly-react/dist/esm/**/${importName}.js`));
142+
if (files.length > 0) {
143+
res = files[0];
144+
} else {
145+
throw new Error(`File with importName ${importName} does not exist`);
146+
}
147+
148+
res = res.replace(path.resolve(__dirname, '../../node_modules/'), '');
149+
res = res.replace(/^\//, '');
150+
return res;
151+
},
152+
preventFullImport: false,
153+
skipDefaultConversion: false
154+
}
155+
},
156+
'pf3-react-ESM'
157+
],
158+
[
159+
'transform-imports',
160+
{
161+
'@material-ui/core': {
162+
transform: (importName) => `@material-ui/core/esm/${importName}`,
163+
preventFullImport: false,
164+
skipDefaultConversion: false
165+
}
166+
},
167+
'MUI-ESM'
168+
]
169+
]
170+
}
171+
}
3172
};

packages/mui-component-mapper/package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
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
},

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

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@ 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 muiExternals = createFilter(
1818
[
1919
'react',
2020
'react-dom',
2121
'prop-types',
2222
'@data-driven-forms/react-form-renderer',
23+
'@data-driven-forms/react-form-renderer/**',
24+
'@material-ui/core',
2325
'@material-ui/core/**',
2426
'@material-ui/styles/**',
2527
'@material-ui/icons/**'
@@ -39,7 +41,7 @@ const globals = {
3941
const babelOptions = {
4042
exclude: /node_modules/,
4143
runtimeHelpers: true,
42-
configFile: '../../babel.config.js'
44+
configFile: './babel.config.js'
4345
};
4446

4547
const commonjsOptions = {
@@ -84,31 +86,19 @@ const plugins = [
8486
sourcemaps()
8587
];
8688

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

packages/mui-component-mapper/src/common/form-field-grid.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from 'react';
22
import PropTypes from 'prop-types';
33

4-
import Grid from '@material-ui/core/Grid';
4+
import { Grid } from '@material-ui/core';
55
import { makeStyles } from '@material-ui/core/styles';
66

77
const useFinalFormFieldStyles = makeStyles({

packages/mui-component-mapper/src/common/multiple-choice-list.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
import React from 'react';
22
import PropTypes from 'prop-types';
33

4-
import Grid from '@material-ui/core/Grid';
5-
import Checkbox from '@material-ui/core/Checkbox';
6-
import FormControlLabel from '@material-ui/core/FormControlLabel';
7-
import FormLabel from '@material-ui/core/FormLabel';
8-
import FormGroup from '@material-ui/core/FormGroup';
9-
import FormControl from '@material-ui/core/FormControl';
10-
import FormHelperText from '@material-ui/core/FormHelperText';
4+
import { Grid, Checkbox, FormControlLabel, FormLabel, FormGroup, FormControl, FormHelperText } from '@material-ui/core';
115

126
import MultipleChoiceListCommon, { wrapperProps } from '@data-driven-forms/common/src/multiple-choice-list';
137
import { validationError } from './helpers';

packages/mui-component-mapper/src/components/checkbox.js renamed to packages/mui-component-mapper/src/files/checkbox.js

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
import React from 'react';
22
import PropTypes from 'prop-types';
3-
import MUICheckbox from '@material-ui/core/Checkbox';
4-
import FormControlLabel from '@material-ui/core/FormControlLabel';
5-
import FormHelperText from '@material-ui/core/FormHelperText';
6-
import FormControl from '@material-ui/core/FormControl';
7-
import FormGroup from '@material-ui/core/FormGroup';
8-
import FormLabel from '@material-ui/core/FormLabel';
3+
import { Checkbox as MUICheckbox, FormControl, FormControlLabel, FormHelperText, FormGroup, FormLabel } from '@material-ui/core';
94
import { meta, input } from '@data-driven-forms/common/src/prop-types-templates';
105

116
import FormFieldGrid from '../common/form-field-grid';

0 commit comments

Comments
 (0)