-
-
Notifications
You must be signed in to change notification settings - Fork 180
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
Make brotli-size optional #214
Merged
siddharthkp
merged 8 commits into
siddharthkp:brotli-optional
from
styfle:brotli-optional
May 2, 2018
Merged
Changes from 4 commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
d783078
Move brotli-size to optionalDependencies
styfle 0387ea4
Add warning "Missing optional dependency"
styfle c9165fa
Bump brotli-size to 0.0.2
styfle 52e72bd
Use prettycli to warn
styfle 589833a
Change brotli-size to peerDependencies
styfle 5e89752
Add note about peer depdendency for brotli-size
styfle 088e8f7
Remove brotli-size
styfle eecc3f9
Move try/catch around require
styfle File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
const { warn } = require('prettycli') | ||
const gzip = require('gzip-size') | ||
const brotli = require('brotli-size') | ||
|
||
const getCompressedSize = (data, compression = 'gzip') => { | ||
let size | ||
|
@@ -8,7 +8,13 @@ const getCompressedSize = (data, compression = 'gzip') => { | |
size = gzip.sync(data) | ||
break | ||
case 'brotli': | ||
size = brotli.sync(data) | ||
try { | ||
const brotli = require('brotli-size') | ||
size = brotli.sync(data) | ||
} catch (e) { | ||
warn(`Missing optional dependency. Install it with: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If something else can throw too in There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @XhmikosR Good point. I fixed this 🔧 |
||
npm install --save brotli-size`) | ||
} | ||
break | ||
case 'none': | ||
default: | ||
|
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm pretty sure that both npm and yarn install
optionalDependencies
by default (they just don't exit with a non-zero exit code, if it wasn't able to be installed).As such with default npm yarn options (which is what most users will use), this PR will solve the installation errors issue, however there will still be install time and size impact from
brotli-size
. Perhaps insteadbrotli-size
should be removed frompackage.json
entirely - and then users will install manually instead? (Which is what the error message added tosrc/compressed-size.js
says to do anyway; though perhaps it would be good to also have aREADME.md
mention?)Many thanks for looking into this!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@edmorley You're right! I changed to peerDependency since this will give a hint to a developer looking at package.json
I also added a note to the README 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unfortunately having in
peerDependencies
will result in warnings being shown when installing with yarn/npm, if it's not installed. Some users fail CI if these warnings are generated. I think the best plan is to omit it frompackage.json
entirely.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@edmorley Yes I can see how that would be misleading for the users who only want to use gzip. I removed it completely now, thanks! 👍