我有一个构建到dist/
目录的ember-cli项目。我已将应用程序配置为处理dist/
目录中的资产,并将历史记录设置为使用哈希而不是pushState。这允许我将index.html
sym链接到根。原因是在GitHub上将项目推送到gh-pages
需要根index.html
,而ember应用程序要求路由绝对不是相对的(AFAIK)。但是,GitHub不会遵循sym-links并需要输出index.html
的副本。这有效,现在我有2个构建步骤(ember build
和cp dist/index.html ./index.html
)。
如何告知我的Brocfile.js
在完成构建后复制输出的index.html
文件?
有点回溯历史:我正在开发一个ember-cli插件。我在GitHub上托管它。我需要提供一个演示站点。 gh-pages
是举办演示网站的正确位置。所以我在gh-pages
分支中创建了一个ember-cli应用程序。我无法将输出文件夹设置为./
,因为ember构建将rm -rf
输出目录销毁源。所以它必须是dist/
。我无法使用<meta http-equiv="Refresh"...
因为Ember在开始时陷入了路径并崩溃了。所以我的解决方案是将index.html
sym-link / copy到更高级别,并更改ember的配置,将dist/
目录添加到资源,并将路由设置为hash而不是pushState。
我目前有一个deply.sh
脚本可以做到这一点,但我想知道是否有办法使用Broccoli进行此操作?
答案 0 :(得分:12)
我们在Ghost结束了。使用ember-cli为自己生成一个in-repo-addon,然后使用你最喜欢的库来复制文件(我已经有了fs-extra并且正在使用它)
使用ember g in-repo-addon <addon-name>
/lib/<addon-name>/index.js
中的:
module.exports = {
name: '<addon-name>',
postBuild: function (results) {
var fs = this.project.require('fs-extra');
fs.copySync(results.directory + '/index.html', '../server/views/default.hbs');
}
};
Ember-cli文档:developing addons和scaffolding in-repo addons