javascript - Nodejs 脚本取消某些代码行的注释或用文件中的内容替换注释

标签 javascript node.js regex

我正在寻找一个nodejs脚本,它将用下面的OUT替换IN

/* api_start ====
app.use('/api',require('./api/api'));
app.use('/sms',require('./api/sms'));
==== api_end */

// app.use('/api',require('./api/api'));
// app.use('/sms',require('./api/sms'));
<小时/>

输出

app.use('/api',require('./api/api'));
app.use('/sms',require('./api/sms'));

基本上只是取消注释这些代码行。

<小时/>

只需将诸如 /* api_here */ 之类的注释替换为文件中的内容,该文件将包含上面 OUT 的中间位置 (api.js )。

更新

来自:https://stackoverflow.com/a/25072070/3066142

如果我可以编写正则表达式来识别该行,则以下内容将起作用。以下是我的尝试

// require:
var replace = require("replace");

// use:
replace({
    regex: "//\s+app\.use\('/api',require\('\./api/api'\)\);", // string to be replaced
    replacement: "test worked!!", // replacement string
    paths: ['dist/server.js'], // path/to/your/file'
    recursive: true,
    silent: true,
});

最佳答案

工作代码笔(包括更多 block 注释等):https://codepen.io/Frederic-Klein/pen/KbXxeB?editors=0012

使用正则表达式匹配和替换给定示例的示例代码,其中捕获 (...) 和非捕获 (?:...) 组替换为内联解释:

const content = `
/* api_start ====
app.use('/api',require('./api/api'));
app.use('/sms',require('./api/sms'));
==== api_end */
// app.use('/api',require('./api/api'));
// app.use('/sms',require('./api/sms'));
`;

const regex_block_comments = /^\/\*.*\n((?:app.*\n)*)(?:.*\*\/\n)/gm;
// match lines
// starting with /*
// having the following lines start with app, capture all those lines as one group ($1 reference)
// having a line ending with */ afterwards, as non-capturing group
// repeat globally (g) and match multiline (m) string

const regex_comment = /^\/\/\s*(app.*;\n)/gm;
// match lines
// starting with //
// ignore following whitespaces
// having text "app" afterwards, capture from app to line-ending as group ($1 reference)

const replacement = `$1`;

newcontent = content.replace(regex_block_comments,replacement);
newcontent = newcontent.replace( regex_comment,replacement);

// content after replacements
console.log(newcontent);

要了解有关正则表达式和构建模式的更多信息,我建议 https://regexr.com/https://regex101.com/ .

关于javascript - Nodejs 脚本取消某些代码行的注释或用文件中的内容替换注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53961571/

相关文章:

javascript - 响应式菜单的子菜单在离开屏幕时不会强制滚动

node.js - Express js 不提供静态文件

php - 从 PHP 运行 NodeJS 命令

regex - 如何定义重写规则以接受除 a-zA-Z- 之外的空字符串?

javascript - 能够在 Firefox 中加载初始化脚本吗?

javascript - 在Vue JS项目中使用Vuex出现错误 "TypeError: this.$state is undefined"

javascript - 后向捕获组与前向捕获组连接

javascript - 正确编写 JavaScript 正则表达式来分割字符串

javascript - 使用sequelize,是否可以与同一对象的多个实例建立关联

javascript - 在异步回调中使用 _.after() ,污染数组变量