2016-06-01 11 views
0

画像のcssとjsファイルのキャッシュを防ぐために、grunt replaceを使用してファイルの名前を変更し、ファイルに乱数を追加しようとしています。 宛先が定義されていないgrunt replaceのエラー

は、だから私は、次のコード

module.exports = function replace(grunt) { 
 

 
    var randomVersion = ((new Date()).valueOf().toString()) + (Math.floor((Math.random() * 1000000) + 1).toString()); 
 
    var replace = { 
 

 
     options: { 
 
     variables: { 
 
      'randomVersion': randomVersion 
 
     }, 
 
     overwrite: true 
 
     }, 
 
     files: [{ 
 
     src: './target/dist/index.html', 
 
     dest: './target/dist/index.' + randomVersion + '.html' 
 
     }] 
 
    }; 
 

 
    console.log(randomVersion); 
 

 
    grunt.config.set('replace', replace); 
 
};

を実行しているが、私は戻って取得すべては?

は、誰もがこの上の任意の光を当てることができます

定義されていない「宛先であります

ありがとう

答えて

0

私はあなたのコードが達成しようとしていることを完全には確信していませんが、私は理解に基づいて答えを進めます。

まず、grunt-replaceライブラリを使用しようとしていますか?もしそうなら、私はこれが間違っていると思う。このライブラリは、ソースファイルのの内容の中の値を置き換えるためのものであり、ではなく、ファイルパス自体です。

あなたがしたいことは、元のindex.htmlファイルを一意の識別子を持つファイルパスにコピーすることです。カスタムタスクでこれをラップしようとしている可能性がありますが、そうする必要はありません。

以下は、このタスクを達成する方法のサンプルGruntfile.jsです。このソリューションでは、grunt-contrib-cleangrunt-contrib-copyのライブラリをインストールする必要があります。

module.exports = function (grunt) { 

    grunt.initConfig({ 
     clean: { 
      dist: ['./target/dist/index.*.html'] 
     }, 

     copy: { 
      dist: { 
       src: './target/src/index.html', 
       dest: './target/dist/index.<%= Date.now() %>.html'  
      } 
     } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-clean'); 
    grunt.loadNpmTasks('grunt-contrib-copy'); 

    grunt.registerTask('default', ['clean', 'copy']); 

}; 

指摘する価値あるこのソリューションについてのいくつかのことがあります。それは、配布するためのもの ではないので

  • index.htmlファイルは、/のdistのフォルダにではありませんむしろ、源である。
  • 新しいバージョンのインデックス。* .htmlを作成する前に、各バージョンの がないように、/ distフォルダ内の既存のバージョン を削除します。
  • バージョンに「ランダム」番号を使用する代わりに、 タイムスタンプを使用します。これは、各バージョンの番号がそれ以前の番号よりも大きい の番号を持つため便利です。
関連する問題