8

在我的grunt.js文件中,我有

requirejs: {
    dist: {
        options: {
            almond: true,
            wrap: true,
            modules: [{name: 'main'}],
            mainConfigFile: "src/js/main.js",
            baseUrl: "src/js",
            dir: "tmp/js",
            inlineText: true,
            preserveLicenseComments: false
        }
    }
}

运行会用一些缩小grunt requirejs:dist的文件填充tmp/js目录 - 其中包括一个很大的 main.js 文件(一切似乎都按预期捆绑在这个文件中) - 但是当我想像这样包含这个文件时

<script type="text/javascript" src="tmp/main.js"></script>

它导致一个"Uncaught ReferenceError: define is not defined"

使用杏仁背后的意图是我不需要加载require.js文件来加载我的优化文件 - 知道如何让它工作吗?

脚注:我已经设法这样做了,除了以前main-built.js编译过一个文件,但是这似乎不再是这种情况了(更新...... -.-)

4

1 回答 1

2

所以我尝试使用以下文件和文件夹设置一个空目录

/grunt.js
/src/js/main.js
/tmp/js

这是我的 grunt.js:

module.exports = function(grunt) {

    grunt.loadNpmTasks("grunt-requirejs");
    grunt.initConfig({
        requirejs: {
            dist: {
                options: {
                    almond: true,
                    wrap: true,
                    modules: [{name: 'main'}],
                    mainConfigFile: "src/js/main.js",
                    baseUrl: "src/js",
                    dir: "tmp/js",
                    inlineText: true,
                    preserveLicenseComments: false
                }
            }
        }
    });

    grunt.registerTask("default", "requirejs");
};

这是我的 main.js:

define(function() {
    console.log('hi');
});

我在控制台中运行了这些命令:

npm install grunt
npm install requirejs
npm install grunt-requirejs
grunt --gruntfile grunt.js

咕噜输出:

Running "requirejs:dist" (requirejs) task
>> RequireJS optimizer finished
Uncompressed size: 14234 bytes.
Compressed size: 1265 bytes gzipped. (2633 bytes minified)

/tmp/js/main.js 中的结果文件确实引用了 almond。它没有提到定义函数,因为 js 已经被最小化了。我的电话define(被重写为n(.

我怀疑您可能在调用定义的最小化文件之外有代码。

此外,在我的另一个项目中,我的 mainConfigFile 仅作为配置文件引用,而不是作为模块加载。

于 2013-06-16T00:04:50.380 回答