2

我正在开发一个基于出色的 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?

4

1 回答 1

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

...你就完成了。这工作做得很好......

干杯

于 2013-10-04T20:20:30.157 回答