我已经阅读了文档和示例app.build.js文件,但是无法将我的js文件连接并缩小为单个文件。我想我只是不明白我在构建脚本中需要什么设置,并希望得到一些帮助。
我的应用设置如下:
src >
js >
build.js
r.js
config.js
app >
main.js
lib >
module1.js
module2.js
module3.js
vendor >
require.js
jquery.js
jquery.validation.js
build >
// Where concat and minified file would go
config.js 如下所示:
requirejs.config({
"baseUrl" : "src/js/lib", // Used because when setting dependencies in modules, this is used
"paths" : {
"app" : "../app",
"jquery" : [
"https://code.jquery.com/jquery-1.11.1.min",
"../vendor/jquery"
],
"validate" : "../vendor/jquery.validate.min"
},
"shim" : {
// Allow plugins with dependencies to load asynchronously
validate : ["jquery"]
}
});
// Load the main app module to start the app
requirejs(["app/main"]);
main.js 看起来像这样:
require(["module1", "module2", "module3"], function(Module1, Module2, Module3) {
return [
Module1.init(),
Module2.init(),
Module3.init(),
Module4.init()
];
});
然后 build.js 就是我丢失的地方。我以为我应该加载一个mainConfigFile因为我正在使用垫片,但我不确定。如果我加载该配置文件,它将使用该配置文件中的baseUrl。我不确定name:
应该准确引用什么,以及我是否缺少一些必要的配置选项。
({
//baseUrl: ".",
paths: {
jquery: "empty:",
//main: "../app/main",
//app: "app"
},
name: "app/main",
out: "../build/main.js",
//mainConfigFile: "config"
})
如果我按原样运行该构建文件(将这些行注释掉),我得到:
错误:ENOENT,没有这样的文件或目录 '/Users/davidpaul/Sites/require/src/js/module1.js'在模块树中: 应用程序/主
当我说'模块树'时,我不确定它被引用了什么。我不断对构建文件中的路径进行更改,但没有取得进展,所以希望有人向我解释一下。
答案 0 :(得分:0)
构建器解析相对于构建文件位置的所有路径(除非changed via the baseUrl property)。如果您看起来与src/js/build.js
相关,则 main.js 位于./app/
,而 module1 / 2 / 3.js 位于./lib/
}。模块内的所有路径都必须相对于公共根目录进行指定,因此要使示例正常工作,就足以将 main.js 的签名更改为:
require(["lib/module1", "lib/module2", "lib/module3"], function(M1, M2, M3) {
// (...)
})
请注意, config.js 不会参与构建过程,您可能还需要对其进行更改,以使您的应用程序既“原始”又可以“优化”。