2012-06-28 1 views
3

У меня есть файл инициализации, который предоставляет функцию, которая загружает RequireJS через require.config(). Конфигурация заканчивает тем, что что-то (в основном), как это:Как настроить RequireJS (require.config()) с жасминовым узлом?

... 

config = 
    baseUrl: sysDir + 'lib/' 
    paths: 
     app: appDir + 'lib/' 
     dep: sysDir + 'vendor/' 
    deps: [ 
     'dep/underscore/underscore.min' 
     'dep/jquery/jquery.min' 
    ] 

require.config config 

Этот файл используется в браузере, и я хочу использовать его в узле тоже. Я пытался сделать то же самое в помощнике, но мне не повезло. Из-за того, как спецификации запускаются в новом контексте VM, я не совсем уверен, что делать, и нет очевидного способа передать jasmine-node вашу конфигурацию RequireJS.

Любые идеи?

ответ

1

Я получил это своего рода работу, поставив требует конфигурации в spec_helper.js в корне моего каталога спецификаций:

define = require('requirejs'); 

(function() { 
    var baseUrl = __dirname + '/../smoke' 
    console.log('Configuring requirejs with baseurl: ' + baseUrl) 

    define.config({ 
     'nodeRequire': global.require, 
     'baseUrl': baseUrl 
    }); 
})(); 

Не уверен, если это будет действительно решить вашу проблему или нет.

+0

Как я уже сказал, я уже пробовал это, и он не работает, потому что каждая спецификация запускается в новом контексте VM. – Xavura

0

жасмин-узел предоставляет пример проекта для requirejs: https://github.com/mhevery/jasmine-node#requirejs

если вы звоните тесты, как > jasmine-node --runWithRequireJs --requireJsSetup tests/requirejs-setup.js tests, вы можете добавить параметры конфигурации в requirejs-установки - файл.

тем не менее у меня была проблема с установкой baseUrl. в requirejs-обертку-template.js BaseUrl манипулируют и устанавливается по отношению к текущему выполненного тестового файла, который вы можете увидеть здесь:

if(alteredConfig.baseUrl){ 
    var base = baseUrl.replace(/\\/g, '/'), 
     splitUrl = alteredConfig.baseUrl.replace(/\\/g, '/').split('/'), 
     index = 0; 

    for(; index < splitUrl.length; index++){ 
     if(splitUrl[index] === '..') { 
      base = path.dirname(base); 
     } else { 
      base += '/' + splitUrl[index]; 
     } 
    } 

    alteredConfig.baseUrl = base; 
} 

это приводит к проблемам с определенными путями из моей requirejs конфигурации. поэтому я просто прокомментировал этот блок кода. и теперь это работает очень хорошо для меня.

 Смежные вопросы

  • Нет связанных вопросов^_^