如何使用RequireJS r.js build更改i18n的路径

Bjo*_*orn 5 javascript internationalization requirejs r.js

我正在为我的javascript项目使用RequireJS,并且r.js为生产构建一个单独的javascript文件.然后将此单个文件(main.js)上载到CDN.这一切都很好,但现在我正在尝试添加i18n支持.

问题是i18n文件的位置是相对于主javascript文件的.所以在一个模块中,我会:

define(['i18n!nls/text'], function(Translation) { });
Run Code Online (Sandbox Code Playgroud)

这一切在我开发时都非常好,但是对于生产而言,问题是转换文件与main.js文件无关,因为它放在CDN中.我不想将翻译文件存储在CDN中,那么如何在构建过程中更改对该文件的引用?

Bjo*_*orn 5

我找到了解决问题的方法.在RequireJS配置中,我添加了:

requirejs.config({
    paths: {
        nls: "/js/nls"
    }
});
Run Code Online (Sandbox Code Playgroud)

因为路径以斜杠开头,所以RequireJS知道它不是相对的.现在我遇到的问题是构建会失败,因为RequireJS会在/ js/nls中查找默认语言文件.因此,我在网络服务器的根目录中添加了一个符号链接到计算机上的nls目录.