-
Notifications
You must be signed in to change notification settings - Fork 132
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
Build tweaks #43
Open
Andarist
wants to merge
13
commits into
que-etc:master
Choose a base branch
from
Andarist:build-tweaks
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Build tweaks #43
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…er in the MapShim constructor to avoid Babel adding its helpers
…operties call - they default to false
Andarist
force-pushed
the
build-tweaks
branch
from
November 20, 2018 16:44
ef65294
to
a3ecba3
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
So this is a PR attempting to optimize (many times doing micro optimizations) the final bundle.
I've checked the bundle size by executing:
Before my PR this has reported the size of 2436. After that I have dropped buble and migrated to babel@7 which got me to 2571. So this was a little bit of a regression. However I've started to optimizing various patterns used across the codebase (you can follow my commits) and I was able to go down to 2444, which is only slight regression (8 bytes). Later I've prepared so called browser build which allowed me to drop environment checks for the browser and that bundle is now sitting at 2367 bytes (69 bytes improvement).
I realize this is not much, but it was fun to do nevertheless.
Right now 3 tests are failing on my machine, I'm happy to fix them, but I don't know how do you feel about changes that I have made here, so I'd like to get a preliminary review/approval first and only proceed with fixing tests after that.
A nice side effect of this PR is that it should make the library tree-shakeable, I have not tested it yet - but by inspecting the final bundle I havent found any more tree-shaking deopts.
PS. We could easily go down to 2351 (another 16 bytes) by removing undefined class properties from the class definition in places where they are assigned in the constructor, that is because the output code looks something like this:
The first statement is obviously not needed, but as part of the class declaration it was annotated with JSDocs and I was unsure how to convert it to annotate it only in the constructor (or somewhere else, without actually declaring it on the class). I might be able to implement this small optimization as part of the Babel itself, so maybe its not worth optimizing right now and better to wait for a new babel release which will have this optimization in the future automatically.