Skip to content

Commit b6a438d

Browse files
committedMay 31, 2019
chore: update parseMerge
1 parent 445ab31 commit b6a438d

File tree

3 files changed

+25
-11
lines changed

3 files changed

+25
-11
lines changed
 

‎packages/utils/ast-utils.ts

+24-3
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,7 @@ function parseTopScope(j: JSCodeshift, ast: Node, value: string[], action: strin
606606

607607
// eslint-disable-next-line @typescript-eslint/no-unused-vars
608608
function parseMerge(j: JSCodeshift, ast: Node, value: string[], action: string): boolean | Node {
609-
function createMergeProperty(p: Node): boolean {
609+
function createMergeProperty(p: Node, configIdentifier: string): boolean {
610610
// FIXME Use j.callExp()
611611
const exportsDecl: Node[] = (p.value as Node).body.map(
612612
(n: Node): Node => {
@@ -626,14 +626,35 @@ function parseMerge(j: JSCodeshift, ast: Node, value: string[], action: string):
626626
type: "MemberExpression"
627627
},
628628
operator: "=",
629-
right: j.callExpression(j.identifier("merge"), [j.identifier(value[0]), exportsDecl.pop()]),
629+
right: j.callExpression(j.identifier("merge"), [j.identifier(configIdentifier), exportsDecl.pop()]),
630630
type: "AssignmentExpression"
631631
};
632632
(p.value as Node).body[bodyLength - 1] = newVal;
633633
return false; // TODO: debug later
634634
}
635+
636+
function addMergeImports(ast: Node, mergeImports: string[]) {
637+
ast.find(j.Program).filter((program: Node): boolean => {
638+
mergeImports.forEach(
639+
(imp: string): void => {
640+
if ((program.value as Node).body.indexOf(imp) === -1){
641+
(program.value as Node).body.splice(-1, 0, imp);
642+
}
643+
}
644+
)
645+
return false;
646+
});
647+
return ast;
648+
}
649+
635650
if (value) {
636-
return ast.find(j.Program).filter((p: Node): boolean => createMergeProperty(p));
651+
const [configIdentifier, configPath] = value;
652+
const mergeImports = [
653+
`const ${configIdentifier} = require('${configPath}')`,
654+
`const merge = require('webpack-merge')`
655+
];
656+
ast = addMergeImports(ast, mergeImports);
657+
return ast.find(j.Program).filter((p: Node): boolean => createMergeProperty(p, configIdentifier));
637658
} else {
638659
return ast;
639660
}

‎packages/utils/recursive-parser.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export default function recursiveTransform(
1515
console.error("Error in parsing top scope, Array required");
1616
return false;
1717
} else if (key === "merge") {
18-
if (typeof value[0] === "string" && Array.isArray(value)) {
18+
if (Array.isArray(value) && typeof value[0] === "string" && typeof value[1] === "string") {
1919
return utils.parseMerge(j, ast, value, action);
2020
}
2121
}

‎packages/utils/scaffold.ts

-7
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,6 @@ export default function runTransform(transformConfig: TransformConfig, action: s
5858
transformations.push("merge");
5959
}
6060

61-
if (config.merge) {
62-
config.topScope.push(
63-
`const merge = require('webpack-merge')`,
64-
`const ${config.merge[0]} = require('${config.merge[1]}')`
65-
)
66-
}
67-
6861
const ast: Node = j(initActionNotDefined ? transformConfig.configFile : "module.exports = {}");
6962

7063
const transformAction: string = action || null;

0 commit comments

Comments
 (0)