7

をコピーするとき、私はGruntjs:ファイル

  • CONCATENATE +ターゲット・ディレクトリ(のcontrib化連結)の中に、いくつかのJSファイルのテンプレートを置き換える
  • コピー+は、いくつかのテンプレートを置き換える必要がありGruntjsスクリプトを書いていたテンプレートを置き換えます他のファイル(のcontrib-コピー)
  • パッケージファイルのzipファイルに

のcontrib-連結は交換するブール値のオプションプロセスを持っていますファイルを処理するときはテンプレート(<% pkg.version %>など)。

contrib-copyにもprocessContentのオプションがありますが、このオプションでテンプレート処理をどのようにトリガーするかわかりません。

module.exports = function(grunt) { 

    grunt.initConfig({ 
     meta: { 
      banner: ' \ 
/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %>\n \ 
* <%= pkg.homepage %>\n \ 
*/\n\n', 
      build_date: '<%= grunt.template.today("yyyy-mm-dd") %>', 
      build_num: process.env.BUILD_NUMBER || 0, // Jenkins build number if available 
      version_string: '<%= pkg.version %>-<%= meta.build_num %>', 
      dist_dir: 'dist/<%= pkg.version %>' 
     }, 
     pkg: grunt.file.readJSON('package.json'), 
     concat: { 
      options: { 
       stripBanners: { 
        block: true 
       }, 
       process: true, 
       separator: '\n /* ----- */ \n', 
       banner: '<%= meta.banner %>' 
      }, 
      dist: { 
       src: [ 
        'src/ViewUtility.js', 
        'src/ViewClass.js', 
        'src/ViewClass.js', 
        'src/MarksClass.js', 
        'src/ViewVersion.js'], 
       dest: 'build/View.js' 
      } 
     }, 
     uglify: { 
      options: { 
       mangle: { 
        except: ['jQuery', 'Hammer'] 
       }, 
       banner: '<%= meta.banner %>' 
      }, 
      dist: { 
       src: '<%= pkg.main %>', 
       dest: 'build/View.min.js' 
      } 
     }, 
     copy: { 
      options: { 
       processContent: true 
      }, 
      dist: { 
       files: [ 
        {expand: true, cwd: 'build/', src: ['**'], dest: '<%= meta.dist_dir %>/view/'}, 
        {expand: true, cwd: 'src/', src: ['View-tp.js'], dest: '<%= meta.dist_dir %>/view/'}, 
        {expand: true, cwd: 'src/', src: ['plugin.json'], dest: '<%= meta.dist_dir %>/'} 
       ] 
      } 
     }, 
     compress: { 
      dist: { 
       options: { 
        archive: 'view_' + '<%= meta.version_string %>_<%= meta.build_date %>' + '.zip' 
       }, 
       expand: true, 
       cwd: 'dist/', 
       src: ['**/*'] 
      } 
     } 

    }); 

    grunt.loadNpmTasks('grunt-contrib-uglify'); 
    grunt.loadNpmTasks('grunt-contrib-concat'); 
    grunt.loadNpmTasks('grunt-contrib-copy'); 
    grunt.loadNpmTasks('grunt-contrib-compress'); 

    grunt.registerTask('default', ['concat', 'uglify', 'copy', 'compress']); 
}; 

上記の処理内容は機能しません。ソリューションを提案してください。

答えて

8

options.processContentプロパティは、確かに機能です。内蔵のprocess templating of gruntで簡単に接続できます。

このスニペットはあなたの<%= pkg.version %>のトリックです。

grunt.initConfig({ 
    pkg:  grunt.file.readJSON("package.json"), 
    distdir: 'dist', 
    srcdir: 'src', 
    copy: { 
     index: { 
     options: { 
      processContent: function (content, srcpath) { 
      return grunt.template.process(content); 
      } 
     }, 
     src: '<%= srcdir %>/index.html', 
     dest: '<%= distdir %>/index.html' 
     } 
    } 
}); 
+3

grunt-contrib-copyのバージョン0.5.0以降、オプション 'processContent'の名前が' process'に変更されました。 – TLindig

4

このようなものを試してください。

processContent: function(content, srcpath) { 
    content = content.replace(/^[\x20\t]+/mg, '').replace(/[\x20\t]+$/mg, ''); 
    content = content.replace(/^[\r\n]+/, '').replace(/[\r\n]+$/, ''); 
    return content; 
} 
+0

ありがとうございました。 processContentから "標準の"テンプレート置換関数を呼び出すことは可能ですか? – matejk

+0

例のおかげで@A。これで私は1分もかからずに稼動しました。 – SimplGy

関連する問題