我注意到r.js版本2.1.16 / 2.1.17中的构建时间与2.1.15及之前相比有显着增加。额外的时间似乎是在'跟踪依赖...的'fase期间花费。
我的 for(ArrayList<String> a : names){
if(a.contains("John")){
a.set(a.indexOf("John"), "Jane");
}
}
看起来像这样:
build.js
在Windows环境中使用node.js运行此构建。 ({
baseUrl: 'some/path/here',
mainConfigFile: 'some/path/here',
dir: 'some/path/here',
modules: [
{
name: "base"
},
{
name: "specific",
exclude: ["base"]
}
],
findNestedDependencies: true,
removeCombined: true,
skipDirOptimize: true,
optimize: "none"
})
和base
都有一个不错的(但不是荒谬的)嵌套依赖项(specific
在base
内部引用,因此被排除在外)。在2.1.15中,这个版本在我的系统上需要±2秒;在2.1.16 / 2.1.17中,它需要±8秒。 (请注意,所有uglification都已被禁用,因此这不是一个因素)
我包含此specific
以供参考,但我认为实际上我的设置不会导致速度减慢。我尝试了很多(简单)场景,它们在跟踪2.1.16 / 2.1.17的依赖关系时似乎都慢得多。
任何人都有这种情况发生吗?还是只是我?我很确定,当我的项目增长时,这个 4x 增加的构建时间将开始以指数方式惹恼我,所以请建议: - )
答案 0 :(得分:3)
我在使用findNestedDependencies: true
的Linux上遇到了同样的问题。
此问题在此处报告https://github.com/jrburke/r.js/issues/850
此处提及以下版本信息http://requirejs.org/docs/download.html。这是问题的最可能原因。
2.1.16
值得注意的变化发生在r.js优化器中:
优化程序在解析依赖项的模块时使用Esprima 2.0。这允许使用一些ES6功能。无论Esprima 2.0可以解析什么都是支持的(当在xpcshell中运行时,仍然使用Reflect.parse)。
答案 1 :(得分:0)
你可以尝试the latest r.js snapshot。 jrburke说this change带来了显着的改善。
[PR]#900刚刚进行了一项似乎真正减少花费时间的变化 在解析步骤中。如果构建时间较慢的人想尝试 出最新的主快照...