当使用grunt-contrib-requirejs构建我的项目时,仅在组件本身(和)中引用的敲除组件的模块不会添加到我的压缩输出脚本文件中。text
mapping
我的淘汰赛模块:
define(['knockout', 'text!./foo.html', 'mapping'], ....)
由于该组件是在运行时异步注入的-AFAIK-grunt-contrib-requirejs不会选择它们并将它们添加到我的压缩文件中,out: "<%= settings.getBuildPath() %>/js/lib/require/require.js",
如下所示:
grunt配置:
requirejs: {
compile: {
options: {
baseUrl: 'src/js',
mainConfigFile: "src/js/app.js",
name: 'app',
out: "<%= settings.getBuildPath() %>/js/optimized.js",
preserveLicenseComments: false,
include: ['lib/require/require.js']
}
}
}
如果我在不是敲除组件模块的另一个脚本文件中引用它们,则该项目将正常运行。
因此,如何使grunt-contrib-requirejs添加在组件中引用的脚本?
我对这个问题的解决方案是使用一个模块注册组件,并在这里需要模板和视图模型,以确保r.js将它们包含在捆绑包中。
我通常需要在main.js中调用此模块。
// registerComponents.js
define(
['knockout', 'componentViewModel', 'text!componentTemplate.html', ],
function (ko, componentViewModel, componentTemplate) {
return function () {
ko.components.register('myComponent', {
viewModel: componentViewModel,
template: componentTemplate
});
};
});
// main.js
require(['registerComponents'], function (registerComponents) {
registerComponents();
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句