javascript - 通过 Grunt 替换 require.js 脚本标签

标签 javascript requirejs gruntjs yeoman

我正在开发一个 yeoman 生成器,它基于出色的 webapp 生成器,但处理一些有点不同的东西。我想要实现的一件事是将 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 的新值被删除了吗?

最佳答案

我自己解决了。去 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

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

干杯

关于javascript - 通过 Grunt 替换 require.js 脚本标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19164875/

相关文章:

javascript - 使用 r.js 编译时为 "ReferenceError: window is not defined"

javascript - Firebase 错误 : TypeError: Cannot use 'in' operator to search for '_delegate' in undefined

javascript - 将 RequireJs 与自定义 JS 插件结合使用

Javascript类调用

javascript - 将 jsPDF 与 Backbonejs 结合使用

angularjs - 警告 : Running "compass:server" (compass) task

node.js - 如何通过 Grunt 配置目录递归 Sass 编译任务

javascript - 将谷歌地图 Api 添加到使用 Bower 和 Grunt 构建的项目中

javascript 事件监听器问题

Javascript "this"被事件监听器覆盖