UNPKG

@cardstack/cli

Version:

Command line tools for Cardstack.

64 lines (60 loc) 1.6 kB
import recast from "recast"; const embroiderSnippet = ` (function(){ const Webpack = require('@embroider/webpack').Webpack; return require("@embroider/compat").compatBuild(app, Webpack, { staticAddonTestSupportTrees: true, staticAddonTrees: true, staticHelpers: true, staticComponents: true, packageRules: [ { package: "@cardstack/routing", addonModules: { "routes/cardstack/common.js": { dependsOnComponents: ["<HeadLayout/>"], }, }, }, { package: "ember-elsewhere", components: { "<ToElsewhere/>": { acceptsComponentArguments: ["send"], }, "<FromElsewhere/>": { yieldsSafeComponents: [true], }, }, }, { package: "liquid-fire", components: { "{{liquid-bind}}": { yieldsArguments: ["value"], }, }, }, ], }); })() `; const embroiderAST = recast.parse(embroiderSnippet).program.body[0]; export function rewriteEmberCLIBuild(source: string) { let ast = recast.parse(source); recast.visit(ast, { visitCallExpression(path) { if ( path.node.callee.type === "MemberExpression" && path.node.callee.object.type === "Identifier" && path.node.callee.object.name === "app" && path.node.callee.property.type === "Identifier" && path.node.callee.property.name === 'toTree' ) { path.replace(embroiderAST); } return false; }, }); return recast.print(ast).code; }