代码之家  ›  专栏  ›  技术社区  ›  Omar

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

  •  0
  • Omar  · 技术社区  · 7 年前

    我正在寻找一个nodejs脚本,它将取代 IN OUT

    /* 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 */ 包含来自文件的内容,该文件将包含来自 在上面( 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,
    });
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Frederic Klein neocanable    7 年前

    工作代码笔(包括更多的块注释等): 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/ .

    推荐文章