2017-03-20 6 views
2

1つのフォルダをコピーし、そのフォルダのファイル名をgruntで変更します。フォルダをコピーしてgruntを使用してファイル名を変更する

基本構造:

mainfolder 
    -project 
     -project.js 
     -project.html 

私はそれは次のようになりますプロジェクトフォルダをコピーするとnewnameprojectを交換したい:私は(ファイルに名前の名前を変更するには、それが困難見つけるのです

mainfolder 
    -project 
     -project.js 
     -project.html 
    -newname 
     -newname.js 
     -newname.html 

コンテンツはnewnameに置き換えられます)。 私が続いている。この段階:

  • コピーされたプロジェクトフォルダnewname1フォルダへ
  • newnameのフォルダ内の
  • 置き換えコンテンツが
  • 削除newname1フォルダ

私はすべての操作をマージしようとした は、それはうまくいきませんでした。あなたは以下のような独自の機能をgrunt copyの内側に名前変更を行うことができます


module.exports = function(grunt) { 

    grunt.initConfig({ 
     copy: { 
      main: { 
       expand: true, 
       src: 'project/**', 
       dest: 'newname1', 
      }, 
     }, 
     replace: { 
      example: { 
       src: ['newname1/*'], 
       dest: 'newname', 
       replacements: [{ 
         from: 'project', 
         to: 'newname' 
        }, 
        { 
         from: 'Project', 
         to: 'Newname' 
        } 
       ], 
      } 
     }, 
     clean: { 
      folder: ['newname1'] 
     }, 
     rename: { 
      main: { 
       files: [{ 
        src: ['newname/**]'], 
        dest: 'newname/**]' 
       }, ] 
      } 
     } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-copy'); 
    grunt.loadNpmTasks('grunt-text-replace'); 
    grunt.loadNpmTasks('grunt-contrib-clean'); 
    grunt.registerTask('default', ['copy', 'replace', 'clean']); 
}; 

答えて

1

: 彼らは冗長現れとして、私はnewname1フォルダとcleanタスクを削除しました。

module.exports = function(grunt) { 

    grunt.initConfig({ 
     copy: { 
      main: { 
       expand: true, 
       cwd:"project", 
       src: '**', 
       dest: 'newname/', 
       rename: function(dest, src) { 
        if(src.indexOf('.')>0){ 
         return dest+"newname"+src.substring(src.indexOf('.'),src.length); 
        }else{ 
         return dest 
        } 
       }, 
      }, 
     }, 
     replace: { 
      example: { 
       src: ['newname/*'], 
       dest: 'newname/', 
       replacements: [{ 
         from: 'project', 
         to: 'newname' 
        }, 
        { 
         from: 'Project', 
         to: 'Newname' 
        } 
       ], 
      } 
     }, 
    }); 

    grunt.loadNpmTasks('grunt-contrib-copy'); 
    grunt.loadNpmTasks('grunt-text-replace'); 
    grunt.registerTask('default', ['copy', 'replace']); 
}; 
+1

こんにちは、私はコピー内の名前を変更しようとする前に機能していませんでした。あなたのソリューションは正常に動作します。私はプロジェクトフォルダ 'viewproject.js'の中にもう一つのファイルがあり、 'newname.js'というファイルを1つだけ与えていたので、リネーム機能にいくつかの変更を加えました は 'dest dest + src.replace( 'project'、 'newname '); ' –

関連する問題