如何在 ember-cli Brocfile.js 中执行 post 构建挂钩?
How do I execute a post build hook in an ember-cli Brocfile.js?
我有一个构建到 dist/
目录的 ember-cli 项目。我已将应用程序配置为处理 dist/
目录中的资产,并将历史记录设置为使用哈希而不是 pushState。这允许我将 index.html
sym-link 到根目录。原因是将项目推送到 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 阻塞了路径并在开始时崩溃。所以我的解决方案是 sym-link/copy index.html
到更高级别并更改 ember 的配置以将 dist/
目录添加到资产并将路由设置为散列pushState.
我目前有一个 deply.sh
脚本可以执行此操作,但我想知道是否有使用西兰花的方法?
我们将在 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 and scaffolding in-repo addons
我有一个构建到 dist/
目录的 ember-cli 项目。我已将应用程序配置为处理 dist/
目录中的资产,并将历史记录设置为使用哈希而不是 pushState。这允许我将 index.html
sym-link 到根目录。原因是将项目推送到 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 阻塞了路径并在开始时崩溃。所以我的解决方案是 sym-link/copy index.html
到更高级别并更改 ember 的配置以将 dist/
目录添加到资产并将路由设置为散列pushState.
我目前有一个 deply.sh
脚本可以执行此操作,但我想知道是否有使用西兰花的方法?
我们将在 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 and scaffolding in-repo addons