Использование grunt requirejs с результатами миндаля в определении не определено

В моем файле 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, однако, похоже, это больше не так (обновления... -.-)


person Peter    schedule 21.10.2012    source источник


Ответы (1)


Поэтому я попытался настроить пустой каталог со следующими файлами и папками.

/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 действительно были ссылки на миндаль. Однако он не упомянул функцию определения, потому что js был сведен к минимуму. Мой звонок define( был переписан на n(.

Я подозреваю, что у вас может быть код вне свернутого файла, который вызывает define.

Кроме того, в другом моем проекте мой mainConfigFile упоминается только как файл конфигурации и не загружается как модуль.

person David Hogue    schedule 16.06.2013
comment
в настоящее время больше не использую require.js, но я постараюсь реализовать ваши предложения, как только снова получу его в свои руки - спасибо за ответ :) - person Peter; 24.06.2013