220

MD5 ファイル名を生成するには、 md5 grunt タスクを使用します。ここで、タスクのコールバックで HTML ファイル内のソースの名前を新しいファイル名に変更したいと考えています。これを行う最も簡単な方法は何だろうか。

4

14 に答える 14

384

簡単な正規表現を使用できます。

var result = fileAsString.replace(/string to be replaced/g, 'replacement');

そう...

var fs = require('fs')
fs.readFile(someFile, 'utf8', function (err,data) {
  if (err) {
    return console.log(err);
  }
  var result = data.replace(/string to be replaced/g, 'replacement');

  fs.writeFile(someFile, result, 'utf8', function (err) {
     if (err) return console.log(err);
  });
});
于 2013-01-06T10:12:07.440 に答える
42

おそらく、「置換」モジュール ( www.npmjs.org/package/replace ) も機能するでしょう。ファイルを読み取ってから書き込む必要はありません。

ドキュメントからの適応:

// install:

npm install replace 

// require:

var replace = require("replace");

// use:

replace({
    regex: "string to be replaced",
    replacement: "replacement string",
    paths: ['path/to/your/file'],
    recursive: true,
    silent: true,
});
于 2014-08-01T02:39:36.823 に答える
31

ShellJS の一部である「sed」関数を使用することもできます...

 $ npm install [-g] shelljs


 require('shelljs/global');
 sed('-i', 'search_pattern', 'replace_pattern', file);

完全なドキュメント ...

于 2014-07-16T07:33:11.763 に答える
5

ストリームを使用して、読み取り中にファイルを処理できます。バッファを使用するのと同じですが、より便利な API を使用します。

var fs = require('fs');
function searchReplaceFile(regexpFind, replace, cssFileName) {
    var file = fs.createReadStream(cssFileName, 'utf8');
    var newCss = '';

    file.on('data', function (chunk) {
        newCss += chunk.toString().replace(regexpFind, replace);
    });

    file.on('end', function () {
        fs.writeFile(cssFileName, newCss, function(err) {
            if (err) {
                return console.log(err);
            } else {
                console.log('Updated!');
            }
    });
});

searchReplaceFile(/foo/g, 'bar', 'file.txt');
于 2016-06-23T14:53:16.487 に答える
0

代わりに二重ストリームを使用します。ここに文書化されているようにnodejs doc 二重ストリーム

変換ストリームは、入力から何らかの方法で出力が計算される Duplex ストリームです。

于 2016-08-28T09:06:13.683 に答える