[英]How to configure RequireJS (require.config()) with jasmine-node?
我有一個init文件,它提供了一個通過require.config()
引導RequireJS的函數。 配置最終看起來像(大多數)像這樣:
...
config =
baseUrl: sysDir + 'lib/'
paths:
app: appDir + 'lib/'
dep: sysDir + 'vendor/'
deps: [
'dep/underscore/underscore.min'
'dep/jquery/jquery.min'
]
require.config config
此文件在瀏覽器中使用,我也想在節點中使用它。 我試圖在幫助器中做同樣的事情,但我沒有太多運氣。 由於在新的VM上下文中運行規范的方式,我不確定該怎么做,並且沒有明顯的方法來傳遞您的RequireJS配置的jasmine-node。
有任何想法嗎?
通過將require配置放入specs目錄根目錄下的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
});
})();
不確定這是否真的能解決你的問題。
jasmine-node為requirejs提供了一個示例項目: https : //github.com/mhevery/jasmine-node#requirejs
如果您調用類似> jasmine-node --runWithRequireJs --requireJsSetup tests/requirejs-setup.js tests
,則可以在requirejs-setup文件中添加配置設置。
然而,我遇到了baseUrl設置的問題。 在requirejs-wrapper-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配置定義路徑出現問題。 所以我只是注釋掉了這個代碼塊。 現在它對我很有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.