使用grunt replace替换指定替换的所有文本

时间:2015-04-15 23:13:27

标签: gruntjs grunt-contrib-watch grunt-contrib-concat

我有一个包含id =“fixedtext”的.html文件,我想用id =“uniquetext”替换所有这些id

grunt-text-replace只是替换它找到的第一个id,而不是解析整个文本。

任何想法如何制作grunt-text-replace https://github.com/yoniholmes/grunt-text-replace

或 grunt-replace https://www.npmjs.com/package/grunt-replace 为整个文档执行此操作,而不仅仅是第一次出现。

replace: {
            dist: {
                options:{
                    patterns:[{
                        match:'id="fixedtext"',
                        replacement: 'id="'+something[i++] +'"'
                    }],
                    files:[
                        {
                            expand: true,
                            src:['./source.html'],
                            dest:'./dest.html'
                        }
                    ]
                }
            }
        },

1 个答案:

答案 0 :(得分:0)

如果要添加唯一ID,可以执行此操作。 假设您在运行任务时已经拥有了要添加的所有ID的数组。

在这种情况下,id是文件名

创建自己的包装器任务

var path = require('path');
var fs = require('fs');

    grunt.initconfig({
    wrap:{
            html:{
                header:'<script type="text/ng-template" ',
                footer:'</script>',
                src:'./yourPathToFile/',
                dest'./yourPathToDest/'
            }
        }
    });

grunt.registerMultiTask('wrap', 'wrap header and footer with custom id', function(){
 var data = this.data;
 getListOfFiles(data.src);

 function getListOfFiles(expand_path){
       var listOfFiles = fs.readdirSync(expand_path);
            for(var i=0; i<listOfFiles.length; i++){
                var completePath = expand_path + listOfFiles[i];
                var extension = path.extname(completePath);
                if(fs.lstatSync(completePath).isDirectory()){
                    var newDirPath = completePath + '/';
                    console.log('true------ : \n',newDirPath);
                    getListofFiles(newDirPath);
                }
                else if(extension == '.html'){
                    console.log('F:\n', completePath);
                    fullSrcPath = path.resolve(completePath);
                    content = grunt.file.read(fullSrcPath);
                    scriptId = 'id="' + listOfFiles[i]+'">';
                    header = (grunt.template.process(data.header));
                    footer = (grunt.template.process(data.footer));
                    wholeFile = header + scriptId + content + footer;
                    grunt.file.write(fullSrcPath, wholeFile);
                }
            } 
 }

});