imageoptim-cli
Advanced tools
Comparing version 1.15.4 to 2.0.0
172
CHANGELOG.md
@@ -1,224 +0,212 @@ | ||
<a name="1.15.4"></a> | ||
## [1.15.4](https://github.com/JamieMason/ImageOptim-CLI/compare/1.15.3...1.15.4) (2017-11-22) | ||
<a name="2.0.0"></a> | ||
# [2.0.0](https://github.com/JamieMason/ImageOptim-CLI/compare/1.15.4...2.0.0) (2018-05-13) | ||
### Bug Fixes | ||
### Features | ||
* **osx:** add support for high sierra ([e25bfce](https://github.com/JamieMason/ImageOptim-CLI/commit/e25bfce)) | ||
* **core:** rewrite imageoptim-cli in node.js | ||
([3faa790](https://github.com/JamieMason/ImageOptim-CLI/commit/3faa790)), closes | ||
[#137](https://github.com/JamieMason/ImageOptim-CLI/issues/137) | ||
[#140](https://github.com/JamieMason/ImageOptim-CLI/issues/140) | ||
[#141](https://github.com/JamieMason/ImageOptim-CLI/issues/141) | ||
[#148](https://github.com/JamieMason/ImageOptim-CLI/issues/148) | ||
[#159](https://github.com/JamieMason/ImageOptim-CLI/issues/159) | ||
### BREAKING CHANGES | ||
* **core:** \* Version 2.0.0 is a complete rewrite of ImageOptim-CLI with numerous changes, please | ||
see the README or run `imageoptim --help` to browse the new API. | ||
<a name="1.15.3"></a> | ||
## [1.15.3](https://github.com/JamieMason/ImageOptim-CLI/compare/1.15.1...1.15.3) (2017-11-14) | ||
<a name="1.15.4"></a> | ||
## [1.15.4](https://github.com/JamieMason/ImageOptim-CLI/compare/1.15.3...1.15.4) (2017-11-22) | ||
### Bug Fixes | ||
* **duplicates:** support multibyte characters ([43d6ce7](https://github.com/JamieMason/ImageOptim-CLI/commit/43d6ce7)) | ||
* **osx:** add support for high sierra ([6208dc4](https://github.com/JamieMason/ImageOptim-CLI/commit/6208dc4)), closes [#152](https://github.com/JamieMason/ImageOptim-CLI/issues/152) | ||
* **osx:** add support for high sierra | ||
([e25bfce](https://github.com/JamieMason/ImageOptim-CLI/commit/e25bfce)) | ||
<a name="1.15.3"></a> | ||
## [1.15.3](https://github.com/JamieMason/ImageOptim-CLI/compare/1.15.1...1.15.3) (2017-11-14) | ||
### Bug Fixes | ||
* **duplicates:** support multibyte characters | ||
([43d6ce7](https://github.com/JamieMason/ImageOptim-CLI/commit/43d6ce7)) | ||
* **osx:** add support for high sierra | ||
([6208dc4](https://github.com/JamieMason/ImageOptim-CLI/commit/6208dc4)), closes | ||
[#152](https://github.com/JamieMason/ImageOptim-CLI/issues/152) | ||
<a name="1.15.1"></a> | ||
## [1.15.1](https://github.com/JamieMason/ImageOptim-CLI/compare/1.14.9...1.15.1) (2017-06-29) | ||
### Bug Fixes | ||
* **file index:** handle cases where no files are found or passed in ([b9b4f7a](https://github.com/JamieMason/ImageOptim-CLI/commit/b9b4f7a)) | ||
* **file index:** handle cases where no files are found or passed in | ||
([b9b4f7a](https://github.com/JamieMason/ImageOptim-CLI/commit/b9b4f7a)) | ||
### Features | ||
* **pngquant:** binary update to 2.9.1 ([8182b51](https://github.com/JamieMason/ImageOptim-CLI/commit/8182b51)) | ||
* **pngquant:** binary update to 2.9.1 | ||
([8182b51](https://github.com/JamieMason/ImageOptim-CLI/commit/8182b51)) | ||
<a name="1.14.9"></a> | ||
<a name="1.14.9"></a> | ||
## [1.14.9](https://github.com/JamieMason/ImageOptim-CLI/compare/1.14.8...1.14.9) (2017-02-05) | ||
### Bug Fixes | ||
* **jpegmini:** the text field in sierra has changed to a combo box ([2f711bb](https://github.com/JamieMason/ImageOptim-CLI/commit/2f711bb)), closes [#129](https://github.com/JamieMason/ImageOptim-CLI/issues/129) | ||
* **jpegmini:** the text field in sierra has changed to a combo box | ||
([2f711bb](https://github.com/JamieMason/ImageOptim-CLI/commit/2f711bb)), closes | ||
[#129](https://github.com/JamieMason/ImageOptim-CLI/issues/129) | ||
<a name="1.14.8"></a> | ||
<a name="1.14.8"></a> | ||
## [1.14.8](https://github.com/JamieMason/ImageOptim-CLI/compare/1.11.4...1.14.8) (2016-02-09) | ||
### Bug Fixes | ||
* **examples:** remove shell syntax highlighting ([0344ae7](https://github.com/JamieMason/ImageOptim-CLI/commit/0344ae7)) | ||
* **filesystem:** remove additional trailing slash after $TMPDIR ([6b60e32](https://github.com/JamieMason/ImageOptim-CLI/commit/6b60e32)), closes [#87](https://github.com/JamieMason/ImageOptim-CLI/issues/87) | ||
* **examples:** remove shell syntax highlighting | ||
([0344ae7](https://github.com/JamieMason/ImageOptim-CLI/commit/0344ae7)) | ||
* **filesystem:** remove additional trailing slash after $TMPDIR | ||
([6b60e32](https://github.com/JamieMason/ImageOptim-CLI/commit/6b60e32)), closes | ||
[#87](https://github.com/JamieMason/ImageOptim-CLI/issues/87) | ||
### Features | ||
* **logging:** per-file reporting is now opt-in via a --verbose flag ([4c9a489](https://github.com/JamieMason/ImageOptim-CLI/commit/4c9a489)) | ||
* **pngquant:** add --skip-if-larger option ([9904253](https://github.com/JamieMason/ImageOptim-CLI/commit/9904253)) | ||
* **pngquant:** replace hard-coded value with -m/--min-quality param ([699d8c8](https://github.com/JamieMason/ImageOptim-CLI/commit/699d8c8)) | ||
* **logging:** per-file reporting is now opt-in via a --verbose flag | ||
([4c9a489](https://github.com/JamieMason/ImageOptim-CLI/commit/4c9a489)) | ||
* **pngquant:** add --skip-if-larger option | ||
([9904253](https://github.com/JamieMason/ImageOptim-CLI/commit/9904253)) | ||
* **pngquant:** replace hard-coded value with -m/--min-quality param | ||
([699d8c8](https://github.com/JamieMason/ImageOptim-CLI/commit/699d8c8)) | ||
<a name="1.11.4"></a> | ||
<a name="1.11.4"></a> | ||
## [1.11.4](https://github.com/JamieMason/ImageOptim-CLI/compare/1.11.3...1.11.4) (2014-11-04) | ||
<a name="1.11.3"></a> | ||
<a name="1.11.3"></a> | ||
## [1.11.3](https://github.com/JamieMason/ImageOptim-CLI/compare/1.11.2...1.11.3) (2014-10-31) | ||
<a name="1.11.2"></a> | ||
<a name="1.11.2"></a> | ||
## [1.11.2](https://github.com/JamieMason/ImageOptim-CLI/compare/1.7.11...1.11.2) (2014-10-31) | ||
<a name="1.7.11"></a> | ||
<a name="1.7.11"></a> | ||
## [1.7.11](https://github.com/JamieMason/ImageOptim-CLI/compare/1.7.10...1.7.11) (2014-01-23) | ||
<a name="1.7.10"></a> | ||
<a name="1.7.10"></a> | ||
## [1.7.10](https://github.com/JamieMason/ImageOptim-CLI/compare/1.7.9...1.7.10) (2013-12-11) | ||
<a name="1.7.9"></a> | ||
<a name="1.7.9"></a> | ||
## [1.7.9](https://github.com/JamieMason/ImageOptim-CLI/compare/1.7.3...1.7.9) (2013-12-10) | ||
<a name="1.7.3"></a> | ||
<a name="1.7.3"></a> | ||
## [1.7.3](https://github.com/JamieMason/ImageOptim-CLI/compare/1.7.2...1.7.3) (2013-11-17) | ||
<a name="1.7.2"></a> | ||
<a name="1.7.2"></a> | ||
## [1.7.2](https://github.com/JamieMason/ImageOptim-CLI/compare/1.7.1...1.7.2) (2013-11-12) | ||
<a name="1.7.1"></a> | ||
<a name="1.7.1"></a> | ||
## [1.7.1](https://github.com/JamieMason/ImageOptim-CLI/compare/1.7.0...1.7.1) (2013-11-10) | ||
<a name="1.7.0"></a> | ||
<a name="1.7.0"></a> | ||
# [1.7.0](https://github.com/JamieMason/ImageOptim-CLI/compare/1.6.19...1.7.0) (2013-11-10) | ||
<a name="1.6.19"></a> | ||
<a name="1.6.19"></a> | ||
## [1.6.19](https://github.com/JamieMason/ImageOptim-CLI/compare/1.6.18...1.6.19) (2013-08-10) | ||
<a name="1.6.18"></a> | ||
<a name="1.6.18"></a> | ||
## [1.6.18](https://github.com/JamieMason/ImageOptim-CLI/compare/1.6.15...1.6.18) (2013-07-31) | ||
<a name="1.6.15"></a> | ||
<a name="1.6.15"></a> | ||
## [1.6.15](https://github.com/JamieMason/ImageOptim-CLI/compare/1.6.14...1.6.15) (2013-07-30) | ||
<a name="1.6.14"></a> | ||
<a name="1.6.14"></a> | ||
## [1.6.14](https://github.com/JamieMason/ImageOptim-CLI/compare/1.6.13...1.6.14) (2013-07-16) | ||
<a name="1.6.13"></a> | ||
<a name="1.6.13"></a> | ||
## [1.6.13](https://github.com/JamieMason/ImageOptim-CLI/compare/1.6.12...1.6.13) (2013-07-14) | ||
<a name="1.6.12"></a> | ||
<a name="1.6.12"></a> | ||
## [1.6.12](https://github.com/JamieMason/ImageOptim-CLI/compare/1.6.11...1.6.12) (2013-07-01) | ||
<a name="1.6.11"></a> | ||
<a name="1.6.11"></a> | ||
## [1.6.11](https://github.com/JamieMason/ImageOptim-CLI/compare/1.4.5...1.6.11) (2013-06-30) | ||
<a name="1.4.5"></a> | ||
<a name="1.4.5"></a> | ||
## [1.4.5](https://github.com/JamieMason/ImageOptim-CLI/compare/1.4.4...1.4.5) (2013-06-19) | ||
<a name="1.4.4"></a> | ||
<a name="1.4.4"></a> | ||
## [1.4.4](https://github.com/JamieMason/ImageOptim-CLI/compare/1.4.3...1.4.4) (2013-06-13) | ||
<a name="1.4.3"></a> | ||
<a name="1.4.3"></a> | ||
## [1.4.3](https://github.com/JamieMason/ImageOptim-CLI/compare/1.4.2...1.4.3) (2013-06-13) | ||
<a name="1.4.2"></a> | ||
<a name="1.4.2"></a> | ||
## [1.4.2](https://github.com/JamieMason/ImageOptim-CLI/compare/1.4.1...1.4.2) (2013-06-10) | ||
<a name="1.4.1"></a> | ||
<a name="1.4.1"></a> | ||
## [1.4.1](https://github.com/JamieMason/ImageOptim-CLI/compare/1.3.2...1.4.1) (2013-06-10) | ||
<a name="1.3.2"></a> | ||
<a name="1.3.2"></a> | ||
## [1.3.2](https://github.com/JamieMason/ImageOptim-CLI/compare/1.3.1...1.3.2) (2013-06-08) | ||
<a name="1.3.1"></a> | ||
<a name="1.3.1"></a> | ||
## [1.3.1](https://github.com/JamieMason/ImageOptim-CLI/compare/1.1.5...1.3.1) (2013-05-26) | ||
<a name="1.1.5"></a> | ||
<a name="1.1.5"></a> | ||
## [1.1.5](https://github.com/JamieMason/ImageOptim-CLI/compare/1.1.4...1.1.5) (2013-05-24) | ||
<a name="1.1.4"></a> | ||
<a name="1.1.4"></a> | ||
## [1.1.4](https://github.com/JamieMason/ImageOptim-CLI/compare/1.1.3...1.1.4) (2013-05-22) | ||
<a name="1.1.3"></a> | ||
<a name="1.1.3"></a> | ||
## [1.1.3](https://github.com/JamieMason/ImageOptim-CLI/compare/1.1.2...1.1.3) (2013-05-20) | ||
<a name="1.1.2"></a> | ||
<a name="1.1.2"></a> | ||
## [1.1.2](https://github.com/JamieMason/ImageOptim-CLI/compare/1.1.1...1.1.2) (2013-05-19) | ||
<a name="1.1.1"></a> | ||
<a name="1.1.1"></a> | ||
## [1.1.1](https://github.com/JamieMason/ImageOptim-CLI/compare/1.0.4...1.1.1) (2013-05-19) | ||
<a name="1.0.4"></a> | ||
<a name="1.0.4"></a> | ||
## [1.0.4](https://github.com/JamieMason/ImageOptim-CLI/compare/1.0.0...1.0.4) (2013-05-18) | ||
<a name="1.0.0"></a> | ||
<a name="1.0.0"></a> | ||
# [1.0.0](https://github.com/JamieMason/ImageOptim-CLI/compare/0.0.6...1.0.0) (2013-05-17) | ||
<a name="0.0.6"></a> | ||
<a name="0.0.6"></a> | ||
## 0.0.6 (2013-03-03) | ||
{ | ||
"name": "imageoptim-cli", | ||
"description": "Automates ImageOptim, ImageAlpha, and JPEGmini for Mac to make batch optimisation of images part of your automated build process.", | ||
"version": "1.15.4", | ||
"author": "Jamie Mason (https://github.com/JamieMason)", | ||
"version": "2.0.0", | ||
"author": "Jamie Mason <jamie@foldleft.io> (https://github.com/JamieMason)", | ||
"bin": { | ||
"imageOptim": "bin/imageOptim", | ||
"imageOptimAppleScriptLib": "bin/imageOptimAppleScriptLib", | ||
"imageOptimBashLib": "bin/imageOptimBashLib", | ||
"pngquant": "bin/pngquant" | ||
"imageoptim": "dist/imageoptim" | ||
}, | ||
@@ -31,8 +28,28 @@ "bugs": "https://github.com/JamieMason/ImageOptim-CLI/issues", | ||
], | ||
"dependencies": { | ||
"@types/execa": "0.9.0", | ||
"@types/fs-extra": "5.0.2", | ||
"@types/globby": "6.1.0", | ||
"@types/node": "10.0.8", | ||
"chalk": "2.4.1", | ||
"commander": "2.15.1", | ||
"execa": "0.10.0", | ||
"fs-extra": "6.0.1", | ||
"globby": "8.0.1", | ||
"pretty-bytes": "5.0.0" | ||
}, | ||
"devDependencies": { | ||
"grunt": "1.0.1", | ||
"grunt-cli": "1.2.0", | ||
"grunt-contrib-concat": "1.0.1", | ||
"grunt-contrib-watch": "1.0.0" | ||
"nexe": "2.0.0-rc.28", | ||
"prettier": "1.12.1", | ||
"rimraf": "2.6.2", | ||
"tslint": "5.10.0", | ||
"typescript": "2.8.3" | ||
}, | ||
"engines": { | ||
"node": ">=8.0.0" | ||
}, | ||
"files": [ | ||
"dist", | ||
"osascript" | ||
], | ||
"homepage": "https://github.com/JamieMason/ImageOptim-CLI", | ||
@@ -62,8 +79,15 @@ "keywords": [ | ||
"license": "MIT", | ||
"main": "./bin/imageOptim", | ||
"main": "syncpack", | ||
"repository": "JamieMason/ImageOptim-CLI", | ||
"scripts": { | ||
"build": "grunt build", | ||
"watch": "grunt watch" | ||
"build": "npm run build:ts && npm run build:bin", | ||
"build:bin": "nexe --target 'mac-x64-10.0.0' --input dist/bin.js --output dist/imageoptim", | ||
"build:ts": "tsc --project .", | ||
"format": "prettier --write '**/*.md' './src/**/*.ts'", | ||
"lint": "tslint --fix --project ./tsconfig.json", | ||
"postbuild": "rimraf dist/*.js", | ||
"prebuild": "rimraf dist ./test/dist", | ||
"prelint": "npm run format", | ||
"prepack": "npm run build" | ||
} | ||
} |
275
README.md
# ImageOptim-CLI | ||
> Automates [ImageOptim](http://imageoptim.com), [ImageAlpha](http://pngmini.com), and | ||
> [JPEGmini for Mac](http://jpegmini.com/mac) to make batch optimisation of images part of your | ||
> automated build process. | ||
[![NPM version](http://img.shields.io/npm/v/imageoptim-cli.svg?style=flat-square)](https://www.npmjs.com/package/imageoptim-cli) | ||
@@ -8,3 +12,2 @@ [![NPM downloads](http://img.shields.io/npm/dm/imageoptim-cli.svg?style=flat-square)](https://www.npmjs.com/package/imageoptim-cli) | ||
[![Donate via PayPal](https://img.shields.io/badge/donate-paypal-blue.svg)](https://www.paypal.me/foldleft) | ||
[![Donate via Gratipay](https://img.shields.io/gratipay/user/JamieMason.svg)](https://gratipay.com/~JamieMason/) | ||
[![Analytics](https://ga-beacon.appspot.com/UA-45466560-5/ImageOptim-CLI?flat&useReferer)](https://github.com/igrigorik/ga-beacon) | ||
@@ -14,61 +17,29 @@ [![Follow JamieMason on GitHub](https://img.shields.io/github/followers/JamieMason.svg?style=social&label=Follow)](https://github.com/JamieMason) | ||
> Automates [ImageOptim](http://imageoptim.com), [ImageAlpha](http://pngmini.com), and | ||
> [JPEGmini for Mac](http://jpegmini.com/mac) to make batch optimisation of images part of your | ||
> automated build process. | ||
## :clipboard: Summary | ||
While other image optimization tools are available from the command line, ImageOptim-CLI exists | ||
because the [current benchmarks](http://jamiemason.github.io/ImageOptim-CLI/) suggest that | ||
ImageOptim, ImageAlpha and JPEGmini currently outperform those alternatives over lossless and | ||
lossy optimizations. | ||
ImageOptim, ImageAlpha and JPEGmini currently outperform those alternatives over lossless and lossy | ||
optimizations. | ||
ImageOptim-CLI is written in TypeScript and AppleScript but is distributed as a self-contained | ||
executable binary, you don't need Node.js installed to use ImageOptim-CLI. | ||
Check out this short [video demo of ImageOptim-CLI](https://www.youtube.com/watch?v=HGBounRIzSs) to | ||
see how it works. | ||
Jamie Mason / [@fold_left](https://twitter.com/fold_left). | ||
## :cloud: Installation | ||
[npm](https://npmjs.org/) is the recommended way to install ImageOptim-CLI as it is the most | ||
convenient. | ||
## Contents | ||
+ [Installation](#installation) | ||
+ [Manual Installation](#manual-installation) | ||
+ [JPEGmini and support for assistive devices](#jpegmini-and-support-for-assistive-devices) | ||
+ [Usage](#usage) | ||
+ [Examples](#examples) | ||
+ [Optimise a directory of images](#optimise-a-directory-of-images) | ||
+ [Optimise a filtered set of images](#optimise-a-filtered-set-of-images) | ||
+ [Passing additional options](#passing-additional-options) | ||
+ [Adding to git pre-commit hook](#adding-to-git-pre-commit-hook) | ||
+ [Related projects](#related-projects) | ||
+ [Grunt plugin](#grunt-plugin) | ||
+ [Comparison of image optimization tools](#comparison-of-image-optimization-tools) | ||
+ [Article for Smashing Magazine](#article-for-smashing-magazine) | ||
+ [Alfred workflow](#alfred-workflow) | ||
+ [FAQs](#faqs) | ||
+ [General](#general) | ||
+ [ImageOptim](#imageoptim) | ||
+ [ImageAlpha](#imagealpha) | ||
+ [JPEGmini](#jpegmini) | ||
+ [Windows and Linux](#windows-and-linux) | ||
## Installation | ||
ImageOptim-CLI is written in Shell and AppleScript, you don't _need_ Node.js to run it. | ||
[npm](https://npmjs.org/) is suggested because it makes installation very convenient. | ||
```shell | ||
``` | ||
npm install -g imageoptim-cli | ||
``` | ||
### Manual Installation | ||
Otherwise, you can install manually by downloading the latest zip then adding ImageOptim-CLI to your | ||
[$PATH](<https://en.wikipedia.org/wiki/PATH_(variable)>). | ||
You can install manually by downloading the latest zip then adding ImageOptim-CLI to your | ||
[$PATH](https://en.wikipedia.org/wiki/PATH_\(variable\)). | ||
```shell | ||
curl --output imageoptim-cli.zip https://codeload.github.com/JamieMason/ImageOptim-CLI/zip/1.15.4 | ||
``` | ||
curl --output imageoptim-cli.zip https://registry.npmjs.org/imageoptim-cli/-/imageoptim-cli-2.0.0.tgz | ||
unzip imageoptim-cli.zip | ||
@@ -79,122 +50,87 @@ export PATH=$PATH:imageoptim-cli/bin | ||
> Saving somewhere in your home directory such as `~/imageoptim-cli` is recommended, but not | ||
essential. Saving to `/Applications` is **not** recommended, do not do this. | ||
> essential. Saving to `/Applications` is **not** recommended, do not do this. | ||
### JPEGmini and support for assistive devices | ||
## :memo: Usage and Examples | ||
You may be presented with the following message the first time you run ImageOptim-CLI with the `--jpeg-mini` flag. | ||
``` | ||
$ imageoptim --help | ||
> To automate JPEGmini we need to add Terminal.app (or iTerm.app etc) to the 'support for assistive devices' whitelist. | ||
Usage: imageoptim [options] [patterns...] | ||
The JPEGmini OS X Apps don't include a command line API, so a real user is | ||
simulated by entering synthetic clicks and keyboard commands instead. This | ||
requires your permission and is easily set up in System Preferences as shown by | ||
these guides. | ||
Options: | ||
+ [Enable access for assistive devices in OS X](http://mizage.com/help/accessibility.html) | ||
+ [OS X Mavericks: Enable access for assistive devices and applications](http://support.apple.com/en-us/HT6026) | ||
-V, --version output the version number | ||
-a, --imagealpha enable ImageAlpha | ||
-j, --jpegmini enable JPEGmini | ||
-C, --no-color output to the terminal without colors | ||
-I, --no-imageoptim disable ImageOptim | ||
-Q, --no-quit do not quit apps once finished | ||
-S, --no-stats do not display file size savings and quality loss information | ||
--number-of-colors <n> ImageAlpha palette size, defaults to 256 | ||
--quality <min>-<max> ImageAlpha quality range from 0-100, defaults to 65-80 | ||
--speed <n> ImageAlpha speed from 1 (brute-force) to 10 (fastest), defaults to 1 | ||
-h, --help output usage information | ||
Supported Apps: | ||
ImageAlpha: https://pngmini.com | ||
ImageOptim: https://imageoptim.com | ||
JPEGmini Lite: https://itunes.apple.com/us/app/jpegmini-lite/id525742250 | ||
JPEGmini Pro: https://itunes.apple.com/us/app/jpegmini-pro/id887163276 | ||
JPEGmini: https://itunes.apple.com/us/app/jpegmini/id498944723 | ||
Examples: | ||
Run ImageOptim.app over every image in current directory | ||
imageoptim | ||
## Usage | ||
Usage: imageOptim [options] | ||
Options: | ||
-d, --directory directory of images to process | ||
-a, --image-alpha pre-process PNGs with ImageAlpha.app * | ||
-j, --jpeg-mini pre-process JPGs with JPEGmini.app ** | ||
-m, --min-quality pngquant min quality parameter | ||
-s, --skip-if-larger pngquant use --skip-if-larger | ||
-q, --quit quit all apps when complete | ||
-c, --no-color disable color output | ||
-h, --help display this usage information | ||
-e, --examples display some example commands and uses | ||
-v, --version display the version number | ||
--verbose display detailed, per-file info on optimizations | ||
* http://pngmini.com | ||
** https://itunes.apple.com/us/app/jpegmini/id498944723 | ||
Run ImageAlpha.app and ImageOptim.app over every PNG in current directory | ||
imageoptim --imagealpha '**/*.png' | ||
Run ImageAlpha.app and JPEGmini.app over every JPG in current directory | ||
imageoptim --jpegmini '**/*.jpg' '**/*.jpeg' | ||
Run ImageOptim.app over every image in a specific directory | ||
imageoptim '~/Desktop' | ||
``` | ||
## :warning: JPEGmini and support for assistive devices | ||
You may be presented with the following message the first time you run ImageOptim-CLI with the | ||
`--jpegmini` flag. | ||
## Examples | ||
### Optimise a directory of images | ||
> To automate JPEGmini we need to add Terminal.app (or iTerm.app etc) to the 'support for assistive | ||
> devices' whitelist. | ||
This command will optimise all image files in your Awesome project. | ||
The JPEGmini OS X Apps don't include a command line API, so a real user is simulated by entering | ||
synthetic clicks and keyboard commands instead. This requires your permission and is easily set up | ||
in System Preferences as shown by these guides. | ||
imageOptim --directory ~/Sites/Awesome # [options] | ||
* [Enable access for assistive devices in OS X](http://mizage.com/help/accessibility.html) | ||
* [OS X Mavericks: Enable access for assistive devices and applications](http://support.apple.com/en-us/HT6026) | ||
### Optimise a filtered set of images | ||
## :bulb: Related Projects | ||
This command will optimise just the .jpg files in your Awesome project. | ||
find ~/Sites/Awesome -name '*.jpg' | imageOptim # [options] | ||
### Passing additional options | ||
The long format for enabling options is as follows; | ||
imageOptim --jpeg-mini --image-alpha --quit --no-color --directory path/to/images | ||
The equivalent of the above in short format is as follows; | ||
imageOptim -j -a -q -c -d path/to/images | ||
### Adding to git pre-commit hook | ||
Adding the below to **your_project/.git/hooks/pre-commit** will run imageoptim-CLI | ||
each time you commit new and changed files into your project. Any files which | ||
aren't images will be ignored. | ||
images=$(git diff --exit-code --cached --name-only --diff-filter=ACM -- '*.png' '*.jpg') | ||
$(exit $?) || (echo "$images" | imageOptim && git add $images) | ||
## Related Projects | ||
### Grunt Plugin | ||
The ImageOptim-CLI [Grunt](http://gruntjs.com) plugin | ||
is [grunt-imageoptim](https://github.com/JamieMason/grunt-imageoptim). | ||
The ImageOptim-CLI [Grunt](http://gruntjs.com) plugin is | ||
[grunt-imageoptim](https://github.com/JamieMason/grunt-imageoptim). | ||
### Comparison of image optimization tools | ||
ImageOptim-CLI features in this comparison of the [performance of image optimisation | ||
tools](http://jamiemason.github.io/ImageOptim-CLI/) alongside Kraken.io, CodeKit, | ||
grunt-contrib-imagemin, Smush.it, and TinyPNG. | ||
ImageOptim-CLI features in this comparison of the | ||
[performance of image optimisation tools](http://jamiemason.github.io/ImageOptim-CLI/) alongside | ||
Kraken.io, CodeKit, grunt-contrib-imagemin, Smush.it, and TinyPNG. | ||
### Article for Smashing Magazine | ||
[How Optimized Are Your Images? Meet ImageOptim-CLI, a Batch Compression | ||
Tool](http://www.smashingmagazine.com/2013/12/17/imageoptim-cli-batch-compression-tool/) | ||
[How Optimized Are Your Images? Meet ImageOptim-CLI, a Batch Compression Tool](http://www.smashingmagazine.com/2013/12/17/imageoptim-cli-batch-compression-tool/) | ||
### Alfred Workflow | ||
The ImageOptim-CLI Workflow for Alfred app | ||
is [alfred-image-optim-workflow](https://github.com/ramiroaraujo/alfred-image-optim-workflow) | ||
The ImageOptim-CLI Workflow for Alfred app is | ||
[alfred-image-optim-workflow](https://github.com/ramiroaraujo/alfred-image-optim-workflow) | ||
## FAQs | ||
### General | ||
@@ -211,8 +147,2 @@ | ||
#### Why are shorthand options supplied in the format `imageoptim -a -j -q` instead of the more common `imageoptim -ajq`? | ||
This was an early mistake which now needs supporting for backwards compatibility. | ||
[Issue 21](https://github.com/JamieMason/ImageOptim-CLI/issues/21) is open to add support for | ||
the `-ajq` format as well as the current format. | ||
#### The WebP image format looks promising, can you get ImageOptim-CLI to convert images to it? | ||
@@ -225,11 +155,7 @@ | ||
JPEGmini does this today, but for ImageOptim and ImageAlpha I feel a feature like this belongs | ||
in those applications rather than this automator. | ||
JPEGmini does this today, but for ImageOptim and ImageAlpha I feel a feature like this belongs in | ||
those applications rather than this automator. | ||
### ImageOptim | ||
#### ImageOptim makes the fans on my Mac run at full power. | ||
@@ -243,6 +169,2 @@ | ||
### ImageAlpha | ||
@@ -256,15 +178,6 @@ | ||
It's also possible that if you look in the [Activity Monitor](http://support.apple.com/kb/HT5890) | ||
you will not see `pngquant` displayed but it _is_ being run. In my experience it's only when you | ||
run ImageOptim-CLI on a very large number of PNGs that you have enough time to spot it. | ||
you will not see `pngquant` displayed but it _is_ being run. In my experience it's only when you run | ||
ImageOptim-CLI on a very large number of PNGs that you have enough time to spot it. ensure that | ||
Activity Monitor's **Update Frequency** is set to **Very Often (1 sec)**. | ||
#### Can I configure ImageAlpha's settings using ImageOptim-CLI? | ||
ImageOptim-CLI is intended to be a simple, convenient, powerful, general-purpose image optimisation | ||
tool. If your needs have outgrown ImageOptim-CLI it's better to | ||
run [pngquant](http://pngquant.org) separately, passing whatever custom settings you need. | ||
### JPEGmini | ||
@@ -274,5 +187,3 @@ | ||
Not currently, the full version of JPEGmini already has some subtle differences and JPEGmini Lite | ||
causes further fragmentation. It is possible but not a priority, as the free version has a limit of | ||
processing 30 images per day anyway. | ||
Yes. | ||
@@ -282,16 +193,12 @@ #### I upgraded from JPEGmini Lite to JPEGmini but ImageOptim-CLI still says JPEGmini is not installed. | ||
Performing the in-app upgrade leaves the app named as jpegmini-lite, so ImageOptim-CLI can't | ||
determine whether it's the free or full version. It is better to instead buy [the full version of | ||
JPEGmini](https://itunes.apple.com/us/app/jpegmini/id498944723) separately. | ||
determine whether it's the free or full version. It is better to instead buy | ||
[the full version of JPEGmini](https://itunes.apple.com/us/app/jpegmini/id498944723) separately. | ||
#### ImageOptim-CLI says “To automate JPEGmini we need to enable GUI Scripting”, how do I do that? | ||
See this tutorial on [how to manage Accessibility preferences | ||
and GUI Scripting](http://www.macosautomation.com/mavericks/guiscripting/index.html). In the case | ||
of OS X Mavericks, you will want to add the Applications JPEGmini and Terminal (or equivalent such | ||
as iTerm). | ||
See this tutorial on | ||
[how to manage Accessibility preferences and GUI Scripting](http://www.macosautomation.com/mavericks/guiscripting/index.html). | ||
In the case of OS X Mavericks, you will want to add the Applications JPEGmini and Terminal (or | ||
equivalent such as iTerm). | ||
### Windows and Linux | ||
@@ -310,4 +217,16 @@ | ||
[@addyosmani](https://github.com/addyosmani) wrote a really thorough article on [tools for | ||
image optimization](http://addyosmani.com/blog/image-optimization-tools/) which discusses a wide | ||
range of options in great detail. | ||
[@addyosmani](https://github.com/addyosmani) wrote a really thorough article on | ||
[tools for image optimization](http://addyosmani.com/blog/image-optimization-tools/) which discusses | ||
a wide range of options in great detail. | ||
## :question: Get Help | ||
There are few ways to get help: | ||
1. For bug reports and feature requests, open issues :bug: | ||
1. For direct and quick help, you can use Slack :rocket: | ||
## :yum: Give Help | ||
Have an idea? Found a bug? Please see the [Contributing Guide](/CONTRIBUTING.md) for information on | ||
how to install the project and start writing code. |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Native code
Supply chain riskContains native code (e.g., compiled binaries or shared libraries). Including native code can obscure malicious behavior.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Native code
Supply chain riskContains native code (e.g., compiled binaries or shared libraries). Including native code can obscure malicious behavior.
Found 1 instance in 1 package
Unidentified License
License(Experimental) Something that seems like a license was found, but its contents could not be matched with a known license.
Found 1 instance in 1 package
38232867
0
100
10
5
9
223
+ Added@types/execa@0.9.0
+ Added@types/fs-extra@5.0.2
+ Added@types/globby@6.1.0
+ Added@types/node@10.0.8
+ Addedchalk@2.4.1
+ Addedcommander@2.15.1
+ Addedexeca@0.10.0
+ Addedfs-extra@6.0.1
+ Addedglobby@8.0.1
+ Addedpretty-bytes@5.0.0
+ Added@mrmlnc/readdir-enhanced@2.2.1(transitive)
+ Added@nodelib/fs.stat@1.1.3(transitive)
+ Added@types/execa@0.9.0(transitive)
+ Added@types/fs-extra@5.0.2(transitive)
+ Added@types/glob@8.1.0(transitive)
+ Added@types/globby@6.1.0(transitive)
+ Added@types/minimatch@5.1.2(transitive)
+ Added@types/node@10.0.8(transitive)
+ Addedansi-styles@3.2.1(transitive)
+ Addedarr-diff@4.0.0(transitive)
+ Addedarr-flatten@1.1.0(transitive)
+ Addedarr-union@3.1.0(transitive)
+ Addedarray-union@1.0.2(transitive)
+ Addedarray-uniq@1.0.3(transitive)
+ Addedarray-unique@0.3.2(transitive)
+ Addedassign-symbols@1.0.0(transitive)
+ Addedatob@2.1.2(transitive)
+ Addedbalanced-match@1.0.2(transitive)
+ Addedbase@0.11.2(transitive)
+ Addedbrace-expansion@1.1.11(transitive)
+ Addedbraces@2.3.2(transitive)
+ Addedcache-base@1.0.1(transitive)
+ Addedcall-me-maybe@1.0.2(transitive)
+ Addedchalk@2.4.1(transitive)
+ Addedclass-utils@0.3.6(transitive)
+ Addedcollection-visit@1.0.0(transitive)
+ Addedcolor-convert@1.9.3(transitive)
+ Addedcolor-name@1.1.3(transitive)
+ Addedcommander@2.15.1(transitive)
+ Addedcomponent-emitter@1.3.1(transitive)
+ Addedconcat-map@0.0.1(transitive)
+ Addedcopy-descriptor@0.1.1(transitive)
+ Addedcross-spawn@6.0.6(transitive)
+ Addeddebug@2.6.9(transitive)
+ Addeddecode-uri-component@0.2.2(transitive)
+ Addeddefine-property@0.2.51.0.02.0.2(transitive)
+ Addeddir-glob@2.2.2(transitive)
+ Addedescape-string-regexp@1.0.5(transitive)
+ Addedexeca@0.10.0(transitive)
+ Addedexpand-brackets@2.1.4(transitive)
+ Addedextend-shallow@2.0.13.0.2(transitive)
+ Addedextglob@2.0.4(transitive)
+ Addedfast-glob@2.2.7(transitive)
+ Addedfill-range@4.0.0(transitive)
+ Addedfor-in@1.0.2(transitive)
+ Addedfragment-cache@0.2.1(transitive)
+ Addedfs-extra@6.0.1(transitive)
+ Addedfs.realpath@1.0.0(transitive)
+ Addedfunction-bind@1.1.2(transitive)
+ Addedget-stream@3.0.0(transitive)
+ Addedget-value@2.0.6(transitive)
+ Addedglob@7.2.3(transitive)
+ Addedglob-parent@3.1.0(transitive)
+ Addedglob-to-regexp@0.3.0(transitive)
+ Addedglobby@8.0.1(transitive)
+ Addedgraceful-fs@4.2.11(transitive)
+ Addedhas-flag@3.0.0(transitive)
+ Addedhas-value@0.3.11.0.0(transitive)
+ Addedhas-values@0.1.41.0.0(transitive)
+ Addedhasown@2.0.2(transitive)
+ Addedignore@3.3.10(transitive)
+ Addedinflight@1.0.6(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedis-accessor-descriptor@1.0.1(transitive)
+ Addedis-buffer@1.1.6(transitive)
+ Addedis-data-descriptor@1.0.1(transitive)
+ Addedis-descriptor@0.1.71.0.3(transitive)
+ Addedis-extendable@0.1.11.0.1(transitive)
+ Addedis-extglob@2.1.1(transitive)
+ Addedis-glob@3.1.04.0.3(transitive)
+ Addedis-number@3.0.0(transitive)
+ Addedis-plain-object@2.0.4(transitive)
+ Addedis-stream@1.1.0(transitive)
+ Addedis-windows@1.0.2(transitive)
+ Addedisarray@1.0.0(transitive)
+ Addedisexe@2.0.0(transitive)
+ Addedisobject@2.1.03.0.1(transitive)
+ Addedjsonfile@4.0.0(transitive)
+ Addedkind-of@3.2.24.0.06.0.3(transitive)
+ Addedmap-cache@0.2.2(transitive)
+ Addedmap-visit@1.0.0(transitive)
+ Addedmerge2@1.4.1(transitive)
+ Addedmicromatch@3.1.10(transitive)
+ Addedminimatch@3.1.2(transitive)
+ Addedmixin-deep@1.3.2(transitive)
+ Addedms@2.0.0(transitive)
+ Addednanomatch@1.2.13(transitive)
+ Addednice-try@1.0.5(transitive)
+ Addednpm-run-path@2.0.2(transitive)
+ Addedobject-copy@0.1.0(transitive)
+ Addedobject-visit@1.0.1(transitive)
+ Addedobject.pick@1.3.0(transitive)
+ Addedonce@1.4.0(transitive)
+ Addedp-finally@1.0.0(transitive)
+ Addedpascalcase@0.1.1(transitive)
+ Addedpath-dirname@1.0.2(transitive)
+ Addedpath-is-absolute@1.0.1(transitive)
+ Addedpath-key@2.0.1(transitive)
+ Addedpath-type@3.0.0(transitive)
+ Addedpify@3.0.0(transitive)
+ Addedposix-character-classes@0.1.1(transitive)
+ Addedpretty-bytes@5.0.0(transitive)
+ Addedregex-not@1.0.2(transitive)
+ Addedrepeat-element@1.1.4(transitive)
+ Addedrepeat-string@1.6.1(transitive)
+ Addedresolve-url@0.2.1(transitive)
+ Addedret@0.1.15(transitive)
+ Addedsafe-regex@1.1.0(transitive)
+ Addedsemver@5.7.2(transitive)
+ Addedset-value@2.0.1(transitive)
+ Addedshebang-command@1.2.0(transitive)
+ Addedshebang-regex@1.0.0(transitive)
+ Addedsignal-exit@3.0.7(transitive)
+ Addedslash@1.0.0(transitive)
+ Addedsnapdragon@0.8.2(transitive)
+ Addedsnapdragon-node@2.1.1(transitive)
+ Addedsnapdragon-util@3.0.1(transitive)
+ Addedsource-map@0.5.7(transitive)
+ Addedsource-map-resolve@0.5.3(transitive)
+ Addedsource-map-url@0.4.1(transitive)
+ Addedsplit-string@3.1.0(transitive)
+ Addedstatic-extend@0.1.2(transitive)
+ Addedstrip-eof@1.0.0(transitive)
+ Addedsupports-color@5.5.0(transitive)
+ Addedto-object-path@0.3.0(transitive)
+ Addedto-regex@3.0.2(transitive)
+ Addedto-regex-range@2.1.1(transitive)
+ Addedunion-value@1.0.1(transitive)
+ Addeduniversalify@0.1.2(transitive)
+ Addedunset-value@1.0.0(transitive)
+ Addedurix@0.1.0(transitive)
+ Addeduse@3.1.1(transitive)
+ Addedwhich@1.3.1(transitive)
+ Addedwrappy@1.0.2(transitive)