Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // wrap-transform.js
- const fs = require('fs');
- const parser = require('@babel/parser').parse;
- const traverse = require('@babel/traverse').default;
- const generate = require('@babel/generator').default;
- const prettier = require('prettier');
- const file = fs.readFileSync('wrap-before.js').toString();
- const ast = parser(file, {sourceType: 'module', plugins: ['jsx']});
- let exportDefaultPath;
- traverse(ast, {
- ExportDefaultDeclaration(path) {
- exportDefaultPath = path;
- },
- })
- const declarationName = exportDefaultPath.node.declaration.name;
- const reducerNames = ['volleyball', 'soccer'].join(',');
- exportDefaultPath.replaceWith(
- parser(
- `
- const mapStateToProps = ({${reducerNames}}) => ({${reducerNames}})
- export default connect(mapStateToProps)(${declarationName})
- `,
- {sourceType: 'module'}
- )
- )
- const newCode = generate(ast).code;
- const prettifiedCode = prettier.format(newCode, { parser: 'babylon' })
- fs.writeFile('wrap-after.js', prettifiedCode, (err) => {
- if (err) throw new Error(err)
- });
Add Comment
Please, Sign In to add comment