[英]How to use same config file for serving modules with requirejs and using r.js on the server side to concatenate and minify?
我正在開發一個使用requirejs從Web瀏覽器動態加載模塊的項目。 其中一些模塊是供應商文件,例如jQuery,它們都通過bower安裝到文件夾/project/root/lib/
。 該項目的模塊位於/project/root/components/
文件夾中。 所以我有一個requirejs配置, components/main.js
,看起來像這樣:
requirejs.config({
baseUrl: '/components',
paths: {
jquery: '/lib/jquery/jquery',
}
});
這樣,當請求供應商模塊時,require通過使用在paths
定義的映射找到它,而所有其他模塊都相對於components
。
我還想使用r.js進行串聯和縮小,並將所有JavaScript文件簡化為app.js
以便在生產中使用。 我能夠使用r.js -o build.js
成功執行此任務。 這是build.js
樣子:
({
baseUrl:'components',
out: 'js/app.js',
name: 'app',
paths: {
jquery: '../lib/jquery/jquery'
}
})
但是,由於在我的require.js配置( main.js
)中定義了許多供應商文件路徑,因此我不想在兩個不同的文件之間復制配置。 我寧願使用單個配置文件。 問題在於main.js
中定義的路徑是絕對路徑( /lib/...
, /components
),因為它們是URL路徑,但是build.js
的路徑必須是相對路徑( ../lib/...
, ../lib/...
/ ./components
),因為它們是文件系統路徑。 有沒有辦法協調這些差異並僅在main.js
定義路徑,然后我在mainConfigFile
中使用mainConfigFile
build.js
? 我嘗試在build.js
使用名為map
的require config,但是此方法要求我為每個模塊定義一個新的映射,這與重新定義所有路徑一樣糟糕。 本質上,我想進行一攬子映射。
有沒有一種方法可以合並我的配置文件以避免重復的路徑定義?
沒有什么要求在傳遞給RequireJS的配置中使用絕對路徑。 RequireJS使用baseUrl
作為起點來解釋相對路徑,因此這應該起作用:
requirejs.config({
baseUrl: '/components',
paths: {
jquery: '../lib/jquery/jquery',
}
});
通過將/components
與../lib/jquery/jquery
合並,RequireJS將為jquery
執行最終路徑計算,解析為/lib/jquery/jquery
,該路徑與最初存在的絕對路徑完全相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.