2016-11-07 11 views
1

文字列css/main.min-1.2.0.cssから始まり、私たちのバージョンでは私のHTMLのバージョン番号をGulpを使って動的に置き換えようとしています。JS Regexファイル名のバージョン番号を置き換えます

以下の正規表現はバージョン番号と一致しますが、正しいバージョンを更新するには、バージョン番号を文字列の先頭に追加する必要があります。

/\b\d+(?:\.\d+)*\b/

正規表現は、理想的には、バージョン番号1.0.0の交換で、この開始文字列とファイルの拡張子と一致する必要があります。

css/main.min-1.0.0.css

編集

Aここから上に従う、私は次のように、それは二重引用符に関連すると思われる失敗した理由に苦しんでいます!

var string = '<link rel="stylesheet" href="https://example.com/css/main.min-1.0.0.css">'; 
string.replace(/css\/main[.]min-(?:\d[.]?)+css$/g, 'css/main.min-1.1.1.css'); 

答えて

1

@Guedesのコメントのおかげで、答えは以下のようになり、バージョニングだけでなく全体が置き換えられました。

replace(/css\/main[.]min-(?:\d[.]?)+css$/g, 'css/main.min-' + pkg.version + '.css') 

編集は誰が使用するゴクゴクタスクとして、以下の例を解決しました。

gulp.task('versioned-paths', function(){ 
    gulp.src(['public/**/*.html', 'public/**/*.php']) 
    .pipe(replace(/css\/main\.min-(?:\d\.\d\.\d)\.css/g, 'css/main.min-' + pkg.version + '.css')) 
    .pipe(replace(/js\/env\.min-(?:\d\.\d\.\d)\.js/g, 'js/env.min-' + pkg.version + '.js')) 
    .pipe(replace(/js\/main\.min-(?:\d\.\d\.\d)\.js/g, 'js/main.min-' + pkg.version + '.js')) 
    .pipe(gulp.dest('public/')); 
}); 
0

これを試してみてください:

var strings = [ 
 
\t 'css/main.min-1.0.0.css', 
 
\t 'css/main.min-11.22.33.css', 
 
\t 'css/main1.min-1.0.0.css' 
 
]; 
 

 
var matchPattern = /^css\/main\.min-\d+\.\d+\.\d+\.css$/; 
 
var replaceString = 'css\/main\.min-2.3.4.css'; 
 

 
strings.forEach(function (string) { 
 
\t if (matchPattern.test(string)) { 
 
\t \t console.log(string + " -> matched"); 
 
\t \t finalVersion = string.replace(matchPattern, replaceString); 
 
\t \t console.log(finalVersion + " after replace") 
 
\t } 
 
\t else { 
 
\t \t console.log(string + " -> not matched"); 
 
\t } 
 
});

+0

遠くはなかったです!ありがとう、私が言及することを忘れていた主なビットは、テキスト文字列ではなくHTML要素だったということでした! –

関連する問題