Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUGFIX lts] Force building Ember bundles when targets.node is defined #19397

Merged
merged 1 commit into from
Feb 12, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,7 @@ module.exports = {

let ember;
let targets = (this.project && this.project.targets && this.project.targets.browsers) || [];
let targetNode = (this.project && this.project.targets && this.project.targets.node) || false;

if (targets.includes('ie 11')) {
this.ui.writeWarnLine(
Expand All @@ -282,7 +283,9 @@ module.exports = {
if (
!isProduction &&
PRE_BUILT_TARGETS.every((target) => targets.includes(target)) &&
targets.length === PRE_BUILT_TARGETS.length
targets.length === PRE_BUILT_TARGETS.length &&
// if node is defined in targets we can't reliably use the prebuilt bundles
!targetNode
Comment on lines +287 to +288
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is only true if we are also using ember-cli-fastboot or fastboot, we can further narrow this down.

Copy link
Member Author

@mansona mansona Feb 11, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so... I think you are probably right, in that it wouldn't make much sense in having node: "current" or any sort of node target in your targets file if you are not using ember-cli-fastboot or fastboot, but I think the code as written is "more correct".

Essentially we are pre-building the ember files for certain targets, and if our actual targets are outside that set then we need to revert to providing the tree rather than the pre-built bundle. It just so happens that we don't target node in our pre-built bundles and this is an instant opt out because of that.

Another thing we could explore is to just hash the full targets (not just the browsers) in some way and compare that to the hash of the targets that the pre-built files were built with. This would have the same effect since it will likely never have node in the full targets file.

Thoughts?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So we discussed this in the Fastboot meeting and have agreed that it is probably fine to go ahead with. I have confirmed that the concern @rwjblue had about the potential performance impact of this change is not actually an issue. I mentioned in the meeting that it seemed the same speed to build, but that was without any data so I did a quick comparison:

Linked to the version from this PR:

➜  ember-website git:(master) time ember build

Missing symlinked npm packages:
Package: ember-source
  * Specified: ~3.24.0
  * Symlinked: 3.27.0

Environment: development
cleaning up...
Built project successfully. Stored in "dist/".
ember build  24.98s user 7.98s system 112% cpu 29.295 total

Using the latest release of ember (at the time):

time ember build
Environment: development
cleaning up...
Built project successfully. Stored in "dist/".
ember build  25.77s user 7.59s system 122% cpu 27.223 total

Those build times are within the margin of error 👍

) {
ember = new Funnel(tree, {
destDir: 'ember',
Expand Down