我已经看过这个话题了几次,但我认为我没见过 确定的解决方案 帐。
我已经尝试将所有我的Foo.deploy.js,Bar.deploy.js组合成一个路径 单个.js文件,然后包含在loadAmber()调用中。这/似乎/ 工作得相当好,但大部分下载大小仍然来自 琥珀内部。
在我的申请中,规模最大的罪犯是:
我不能太多关于jQuery UI的大小,但我可以做很多关于 琥珀色核心的大小,以及获取它们所需的HTTP请求数。 唯一的问题是我无法弄清楚如何告诉Amber不要自动化 获取Kernel-Objects.deploy.js等
是否有人设法将他们的整个Amber javascript打包成单个.js 文件成功?
代码:http://github.com/rtyler Chatter:http://twitter.com/agentdero
答案 0 :(得分:6)
Amber编译器可以做很多事情:
http://github.com/NicolasPetton/amber/blob/master/bin/amberc#L18-90
以下命令将编译jQuery和列出的包并生成amber-deploy.js:
./bin/amberc -l js/lib/jQuery/jquery-1.6.4.min,Kernel-Objects.deploy,Kernel-Classes.deploy,Kernel-Methods.deploy,Kernel-Collections.deploy,Kernel-Exceptions.deploy,Canvas.deploy amber-deploy
请注意列出的文件名之间缺少空格。
此外 - 您可以下载Google Closure编译器http://closure-compiler.googlecode.com/files/compiler-latest.zip并将其放在您的主目录(〜/ compiler.jar)中然后运行(注意 -O 选项):< / p>
./bin/amberc -O -l js/lib/jQuery/jquery-1.6.4.min,Kernel-Objects.deploy,Kernel-Classes.deploy,Kernel-Methods.deploy,Kernel-Collections.deploy,Kernel-Exceptions.deploy,Canvas.deploy amber-deploy
然后在你的HTML中你可以放:
<script src='amber-deploy.js'></script>
答案 1 :(得分:3)
从Amber 0.13开始,您可以使用RequireJS优化器创建一个最小化的JS文件,包括您自己的代码,Amber和所有依赖项。
(sudo) npm -g install amber-cli@~0.13.0
关键是构建文件。以前直接进入index.html的所有RequireJS设置都在这里。例如,稍微定制的app.build.js:
({
mainConfigFile: "config.js",
paths: {
... skipped items there by default
'lib/jquery-migrate': 'bower_components/jquery/jquery-migrate'
},
"shim": {
'lib/jquery-migrate': [ 'jquery' ]
},
include: [
'amber/requirejs/require.min',
'amber/deploy',
'my-namespace/MyPackage',
'lib/jquery-migrate'
],
out: "all-in-1.js"
})
现在,运行r.js -o app.build.js
现在将生成一个名为all-in-1.js的缩小JS文件,这是您需要从index.html加载的唯一文件
答案 2 :(得分:1)
我相信咒语现在应该是这样的 -
./bin/amberc -m Counter st/Examples.st Onefile
...我正在为“Counter”示例创建单个文件分发而不实际实例化计数器。输出文件将是“Onefile.js”,其中包含必要的琥珀色内核类以及Counter示例类。
然而,当我尝试加载Onefile.js时,我在MacOSX上的Chrome和Safari中的JS控制台中出现多个“超出最大调用堆栈大小”错误。虽然我觉得“一个文件要部署”的情景接近现实,但仍有一些疣要治愈。
将“-O”标志添加到上述命令中会导致输出文件通过谷歌闭包编译器传递,其路径应该在“〜/ compiler.jar”中。即 -
./bin/amberc -O -m Counter st/Examples.st Onefile
将导致最小化的单个JS输出文件,这很好。
答案 3 :(得分:1)
Amber Version 0.13已经released。
在此版本中命令
amber init
在许多其他文件中创建Gruntfile.js(http://gruntjs.com/)。
使用
grunt deploy
命令行上的
您的名为the.js
的JavaScript文件已更改为包含部署所需的所有内容。
这意味着部署只需要
index.html
the.js
放入目标目录。
the.js
仅包含JavaScript。没有Smalltalk消息来源。
用
grunt develop
切换回开发模式。您会得到the.js
来源:https://github.com/amber-smalltalk/amber/wiki/Deploying-Amber