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

Make brotli-size optional by styfle #220

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ before_script:
- greenkeeper-lockfile-update
script:
- npm run lint
- npm test
after_script: greenkeeper-lockfile-upload
notifications:
email: false
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ npx bundlesize
#### 1) Add the path and maxSize in your `package.json`.
By default the gzipped size is tested. You can use the `compression` option to change this. (`gzip`, `brotli`, or `none`).

To use the `brotli` compression option, you must install the peer dependency: `npm install --save brotli-size`

```json
{
"name": "your cool library",
Expand Down
1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
"license": "MIT",
"dependencies": {
"axios": "^0.17.0",
"brotli-size": "0.0.1",
"bytes": "^3.0.0",
"ci-env": "^1.4.0",
"commander": "^2.11.0",
Expand Down
9 changes: 8 additions & 1 deletion src/compressed-size.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const { warn } = require('prettycli')
Copy link
Collaborator

@palashmon palashmon May 5, 2018

Choose a reason for hiding this comment

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

There is a CI build error coming due to this line:

> eslint src store/*.js

/home/travis/build/siddharthkp/bundlesize/src/compressed-size.js
  1:9  error  'warn' is assigned a value but never used  no-unused-vars
✖ 1 problem (1 error, 0 warnings)

Please remove this line.

const gzip = require('gzip-size')
const brotli = require('brotli-size')
let brotli

const getCompressedSize = (data, compression = 'gzip') => {
let size
Expand All @@ -8,6 +9,12 @@ const getCompressedSize = (data, compression = 'gzip') => {
size = gzip.sync(data)
break
case 'brotli':
try {
brotli = require('brotli-size')
} catch (e) {
throw new Error(`Missing optional dependency. Install it with:
Copy link
Owner Author

Choose a reason for hiding this comment

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

I don't think you should throw an error here. I would say, the travis build should pass because it only invokes bundlesize and the bundlesize build status should error out with the right message.

This should help: https://github.com/siddharthkp/bundlesize/blob/master/src/build.js#L32

Copy link

Choose a reason for hiding this comment

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

I'm not sure I understand. Do you want to make the change on this branch?

Copy link
Owner Author

Choose a reason for hiding this comment

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

yep, this branch

Copy link
Contributor

@jakebolam jakebolam May 6, 2018

Choose a reason for hiding this comment

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

I think siddharthkp was saying that you can make bundlesize exit with non-zero, so travis doesn't fail, but report bundlesize failure status to GitHub

In an offshoot version of bundlesize, we've elected to fail the build
https://github.com/bundlewatch/bundlewatch/blob/master/src/app/getLocalFileDetails/getSize.js#L12

Copy link
Owner Author

@siddharthkp siddharthkp May 7, 2018

Choose a reason for hiding this comment

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

I'd suggest the way to fail the bundlesize build would be the companion error method: https://github.com/siddharthkp/bundlesize/blob/master/src/build.js#L32

Copy link

Choose a reason for hiding this comment

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

@siddharthkp Would you like to implement this?

Copy link
Owner Author

Choose a reason for hiding this comment

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

I don't mind, it might take me some time to get to this though 😅

npm install --save brotli-size`)
}
size = brotli.sync(data)
break
case 'none':
Expand Down