r.js powered Node 构建脚本生成的文件似乎没有执行任何操作
File produced by r.js powered Node build script doesn't appear to do anything
来源
我的 src
具有以下结构:
src
|-- index.html
|-- js
| |-- amdconfig.js
| |-- main.js
| |-- ...
|-- lib
|-- require
| |-- require.js
|-- d3
| |-- d3.js
|-- luciad
|-- ...
我的 index.html
包含以下代码:
<script src="./lib/requirejs/require.js" type="text/javascript"></script><!-- require.js -->
<script src="./js/amdconfig.js" type="text/javascript"></script><!-- require.js config -->
<script type="text/javascript">
require(["app/js/main"]); /* main module */
</script>
我的 amdconfig.js
文件包含以下代码:
(function(configure, app) {
var lib = [app, "lib"].join("/");
configure({
baseUrl : app,
urlArgs : "bust=" + (new Date()).getTime(),
packages : [{
name : "requirejs",
location : [lib, "requirejs"].join("/")
}, {
name : "luciad",
location : [lib, "luciad"].join("/")
}, {
name : "d3",
location : [lib, "d3"].join("/")
}, {
name : "app",
location : app
}],
cache : {}
})
})(
require.config ? require.config /* RequireJS */ : require, /* Dojo */
'.'
)
我的构建脚本
我有一个具有以下结构的构建脚本:
builder
|-- build.js
|-- package.json
如果有如下代码:
require('requirejs').optimize({
baseUrl: '../src',
paths: {
main: 'main',
requirejs : './lib/requirejs',
luciad : './lib/luciad',
d3 : './lib/d3',
app : './'
},
name: 'js/main',
out : '../dist/main.js',
optimize: "uglify2",
uglify2: {
output: {
beautify: false
},
compress: {},
warnings: true,
mangle: true
}
}, function (buildResponse) {
console.log(buildResponse);
});
我的问题
构建脚本确实生成了一个缩小的 main.js
文件,并按预期在控制台中输出包含文件的列表。
但是,当我用刚生成的 main.js
替换 src
的 main.js
时,没有任何反应。我的应用没有启动,也没有收到任何错误。
我在这里错过了什么?
备注
如果我不缩小我的代码,我会得到相同的行为。
生成的文件由一大堆这种格式的模块组成:
define('namespaced/path',["dependency1", "dependency2"], function(a,b){...});
我想这是预期的格式...
我设法弄清楚是什么导致了我的问题。
生成的输出看起来是这样的:
define('luciad/util/create',[],function(){...});
define('luciad/error/_createError',["../util/create"],function(a){...});
define('luciad/error/ProgrammingError',["./_createError"],function(a){...)});
...
define('js/main',[...],function(...){...});
注意最后一行。在那里,我的主模块称为 js/main
。但是,我的主模块在我的 HTML 文件中是这样调用的:
require(["app/js/main"]);
那么,发生的事情是,require(["app/js/main"])
无提示地失败了,因为它找不到名为 app/js/main
的模块。
解决方案非常简单。我所要做的就是将 name
参数从 js/main
重命名为 app/js/main
。现在,一切正常。
我不知道我怎么会错过这个,但我想 require(["app/js/main"])
的无声失败并没有完全帮助。
来源
我的 src
具有以下结构:
src
|-- index.html
|-- js
| |-- amdconfig.js
| |-- main.js
| |-- ...
|-- lib
|-- require
| |-- require.js
|-- d3
| |-- d3.js
|-- luciad
|-- ...
我的 index.html
包含以下代码:
<script src="./lib/requirejs/require.js" type="text/javascript"></script><!-- require.js -->
<script src="./js/amdconfig.js" type="text/javascript"></script><!-- require.js config -->
<script type="text/javascript">
require(["app/js/main"]); /* main module */
</script>
我的 amdconfig.js
文件包含以下代码:
(function(configure, app) {
var lib = [app, "lib"].join("/");
configure({
baseUrl : app,
urlArgs : "bust=" + (new Date()).getTime(),
packages : [{
name : "requirejs",
location : [lib, "requirejs"].join("/")
}, {
name : "luciad",
location : [lib, "luciad"].join("/")
}, {
name : "d3",
location : [lib, "d3"].join("/")
}, {
name : "app",
location : app
}],
cache : {}
})
})(
require.config ? require.config /* RequireJS */ : require, /* Dojo */
'.'
)
我的构建脚本
我有一个具有以下结构的构建脚本:
builder
|-- build.js
|-- package.json
如果有如下代码:
require('requirejs').optimize({
baseUrl: '../src',
paths: {
main: 'main',
requirejs : './lib/requirejs',
luciad : './lib/luciad',
d3 : './lib/d3',
app : './'
},
name: 'js/main',
out : '../dist/main.js',
optimize: "uglify2",
uglify2: {
output: {
beautify: false
},
compress: {},
warnings: true,
mangle: true
}
}, function (buildResponse) {
console.log(buildResponse);
});
我的问题
构建脚本确实生成了一个缩小的 main.js
文件,并按预期在控制台中输出包含文件的列表。
但是,当我用刚生成的 main.js
替换 src
的 main.js
时,没有任何反应。我的应用没有启动,也没有收到任何错误。
我在这里错过了什么?
备注
如果我不缩小我的代码,我会得到相同的行为。
生成的文件由一大堆这种格式的模块组成:
define('namespaced/path',["dependency1", "dependency2"], function(a,b){...});
我想这是预期的格式...
我设法弄清楚是什么导致了我的问题。
生成的输出看起来是这样的:
define('luciad/util/create',[],function(){...});
define('luciad/error/_createError',["../util/create"],function(a){...});
define('luciad/error/ProgrammingError',["./_createError"],function(a){...)});
...
define('js/main',[...],function(...){...});
注意最后一行。在那里,我的主模块称为 js/main
。但是,我的主模块在我的 HTML 文件中是这样调用的:
require(["app/js/main"]);
那么,发生的事情是,require(["app/js/main"])
无提示地失败了,因为它找不到名为 app/js/main
的模块。
解决方案非常简单。我所要做的就是将 name
参数从 js/main
重命名为 app/js/main
。现在,一切正常。
我不知道我怎么会错过这个,但我想 require(["app/js/main"])
的无声失败并没有完全帮助。