正如标题所说,我正在尝试设置我的项目,以便优化器可以在其上运行。
我希望支持multi-page shim style configuration。那就是:一个通用脚本,带有将在运行时动态加载的兄弟脚本。
我的项目还利用通过bower安装的依赖项,这些依赖项设置为进入vendor
目录。还有一个node_modules
目录,虽然它不包含客户端的任何内容,但应完全忽略。
这是我到目前为止的结构:
/
node_modules/
vendor/
some-code/
a-script.js
more-code/
another-script.js
common.js
main.js
runtime.js
build.js
由于此过程,我真正想要的是我的构建目标中的两个文件,分别对应main.js
和runtime.js
。最初加载编译的main
并且可能在运行时加载编译的runtime
但只包含图表中新的依赖项。
问题&的问题:
common.js
来自vendor
的{{1}} shims脚本有什么关于我的目录结构可能会在r.js构建过程中出现问题吗?node_modules
中的所有内容,这是错误的,因为我不希望它触及node_modules
中的任何内容。vendor
中似乎错误的一切。它不应该组装所有文件,然后在不触及vendor
目录中的原件的情况下缩小它们吗?dist
目录最终包含我的完整项目和目录结构的完整副本,所有.js文件都缩小了。我的印象是它包含的所有内容最多只有两个.js文件,所有内联内容?这可能吗?这是我的build.js
/ build.json
文件:
{
"mainConfigFile": "common.js",
"dir": "dist",
"modules": [
{
"name": "main"
},
{
"name": "runtime",
"exclude": [
"common"
]
}
]
}
答案 0 :(得分:0)
您的目录结构看起来很好,但通常的做法是将您正在处理的所有内容放入源目录,然后构建(使用gulp或grunt)到构建目录中。
< / LI>这是正确的行为r.js.它会将您需要的所有内容(包括节点模块)复制到单个构建文件中。这对性能更好,因为您只为所有节点模块发出单个HTTP请求而不是bajillion。它没有修改node_modules
不,这是正确的,与上述相同。
我认为选择性地构建一些文件并异步加载其余文件是不可能的。我不知道为什么你想这样做,因为它可能会导致相当大的性能影响。
顺便说一句,社区似乎正在从require.js转向browserify。您可能需要check it out。