Tag: 抽象语法树

组织需要并将它们移到文档Top

我正在组织代码在一个应用程序。 require声明是不组织的,所以我使这个codemod对它们进行sorting并将它们添加到页面顶部。 codemod工作 ,几乎完美。 我有些疑惑: 这是一个好方法,还是有一个更正确的方式来使用API​​? 我怎么能保持sourceStart (所有要求)和其他源代码之间的空行? 在ES6import中可以使用类似的方法吗? (即用jscodeshift对它们进行sorting) 我的初始代码: var path = require('path'); var stylus = require('stylus'); var express = require('express'); var router = express.Router(); var async = require('async'); let restOfCode = 'foo'; 我的codemod: let requires = j(file.source).find(j.CallExpression, { "callee": { "name": "require" } }).closest(j.VariableDeclarator); let sortedNames = requires.__paths.map(node => node.node.id.name).sort(sort); // ["async", […]

以编程方式在JS文件中插入一行

我想写一个程序,将在现有的HTML文件中添加一行到JS。 我以为我会使用node.js,因为它是相同的语言。 我看了一些项目, esprima , 橡子 , rocambole , falafel , escodegen等,但我似乎无法find任何文件如何添加到AST的节点,以创build此新行。 我不知道是否一个parsing工具是最好的东西 – 也许我会更好地使用条纹操纵/正则expression式? 我也想修改一些行以及添加新行。 下面的代码是我目前不得不添加一行到JavaScript的非工作代码。 var newNode = JSON.parse(transparent); // get html string here fs.readFile(path.normalize('C:\myDoc'), function (err, html) { if (err) { throw err; } handler = new htmlparser.DomHandler(function (err, dom) { if (err) { sys.debug("Error: " + err); } else { // […]