使用节点js编辑JavaScript文件

时间:2017-10-25 06:13:40

标签: javascript node.js ecmascript-6

如何使用nodeJS在JavaScript文件中查找和编辑属性值。

例如:如果我有一个名为app.js的文件,其中包含以下代码。

let title = "hello world";

document.getElementById("arr").innerHTML = title;

如何使用nodeJS更改 title let title = "hello world";或任何其他属性的值。

2 个答案:

答案 0 :(得分:0)

为什么不使用易于序列化的JSON之类的东西,而不是试图解析/编辑JS文件?

您的gulp任务可以写入文件所需的任何值:

const fs = require('fs')
fs.writeFileSync('./blah.json', JSON.stringify({ title: "whatever" }))

然后您的代码引用JSON文件

const title = require('./blah.json').title
document.getElementById("arr").innerHTML = title;

答案 1 :(得分:0)

我能够使用正则表达式编辑JavaScript文件。我的代码如下:

  function updateFile(filename, replacements) {
            return new Promise(function(resolve) {
                fs.readFile(filename, 'utf-8', function(err, data) {
                    var regex, replaceStr;
                    if (err) {
                        throw (err);
                    } else {
                        regex = new RegExp("(\\" + 'let' + "\\s* ]*" + replacements[0].rule + "\\s*=\\s*)([^\\n;}]+)([\\s*;}])");
                            replaceStr = "$1" + replacements[0].replacer + "$3";
                            data = data.replace(regex, replaceStr);

                    }
                    fs.writeFile(filename, data, 'utf-8', function(err) {

                        if (err) {
                            throw (err);
                        } else {
                            resolve();
                        }
                    });
                });
            })
        }

用法:

var file = src/app.js
var myNewValue = "Hello";

     updateFile(file, [{
                rule: 'newApp',
                replacer: myNewValue
            }], function (err) {
                sails.log.info((err));
            });

这将编辑,

let newApp = lol; to let newApp = Hello;