通过Grunt替换require.js脚本标记

时间:2013-10-03 16:53:32

标签: javascript requirejs gruntjs yeoman

我正在研究一个基于神奇的webapp生成器的yeoman生成器,但处理的东西有点不同。我想要实现的一件事是将require.js文件作为一个文件。这意味着而不是......

<script data-main="scripts/main" src="bower_components/requirejs/require.js"></script>

......我想要这个:

<script scr="scripts/main"></script>

从require.js开始,这几乎没有用。

require.config({
    paths: {
        // ...
        requireLib: '../bower_components/requirejs/require'
    }
});

require(['...', 'requireLib'], function (..., requireLib) {
    // ...
});

我被困在Gruntfile.js部分。修改脚本标记的最佳方法是什么,例如将data-main的值作为src和data-main的新值删除?

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题。去找grunt-regex-replace:

npm install grunt-regex-replace --save-dev

在Gruntfile.js中执行此操作:

module.exports = function (grunt) {
    // ...
    require('load-grunt-tasks')(grunt);

    grunt.initConfig({
        // ...
        'regex-replace': {
            dist: {
                src: ['<%= yeoman.dist %>/index.html'],
                actions: [
                    {
                        name: 'requirejs-onefile',
                        search: '<script data-main=".*" src="bower_components/requirejs/require.js"></script>',
                        replace: function(match){
                            var regex = /scripts\/.*main/;
                            var result = regex.exec(match);
                            return '<script src="' + result[0] + '.js"></script>';
                        },
                        flags: 'g'
                    }
                ]
            }
        }
    });
}

运行此...

grunt regex-replace

......你已经完成了。这很好地完成了工作......

干杯