assets/js/
- build/
- plugin/
jquery.min.js
- src/
index.js
config.js
builds.js
require.js
requirejs(['jquery']);
requirejs.config({
baseUrl: './',
paths: {
jquery: 'plugin/jquery.min'
}
})
如果我想使用r.js来优化文件,只需执行r.js -o config.js name=src/index out=build/index.js
,r.js会将文件编译成build/index.js
并具有优化和依赖性,但是会有很多文件需要在将来编译,所以我创建了一个builds.js
({
appDir: 'src',
dir: 'build',
mainConfigFile: 'config.js',
modules: [
{name: 'index'}
]
})
如果我运行r.js -o builds.js
,我的路径信息就会错误。
Error: Error: ENOENT: no such file or directory, open 'D:\www\r\build\plugin\jquery.min.js'
我需要返回config.js
,然后修改相对于src
的路径。
requirejs.config({
baseUrl: './',
paths: {
jquery: '../plugin/jquery.min'
}
})
它可以工作,但是可以为两个目的编写一个配置文件吗?
答案 0 :(得分:0)
在构建文件中再次指定路径,相对于/ src。
({
appDir: 'src',
baseUrl: './',
dir: 'build',
modules: [
{name: 'index'}
],
paths: {
jquery: '../plugin/jquery.min'
}
})
构建文件中的路径与配置文件中的路径不同。
/ src的appDir选项指定所有脚本都位于/ src中,但是你的config.js和文件夹结构在/ src之外都有/ plugins。
解析jquery路径后,将使用config.js文件中的路径,因为使用了mainConfigFile选项。
除了配置文件之外,还需要在构建文件中重新定义所有模块路径。这是因为所有模块路径都是相对于baseUrl解析的,而baseUrl与构建文件中的appDir有关 - 这就是令人困惑的位。
引用以下r.js示例构建文件。 https://github.com/jrburke/r.js/blob/master/build/example.build.js
RequireJS优化器上的官方文档包含有关路径解析的有用部分。 http://requirejs.org/docs/optimization.html#basics
相对路径解析规则:
通常,如果它是路径,则它相对于用于保存构建选项的build.js文件,或者相对于当前工作目录仅使用命令行参数。作为文件路径的属性示例: appDir,dir,mainConfigFile,out,wrap.startFile,wrap.endFile 。
对于 baseUrl ,它相对于 appDir 。如果没有appDir,则baseUrl相对于build.js文件,或者仅使用命令行参数,即当前工作目录。
对于路径和包,它们与baseUrl相关,就像它们对require.js一样。