svgo 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.MD +50 -27
- data/lib/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4ebb97bdbb38bc262905561697cc70dbd987f05
|
4
|
+
data.tar.gz: ca37304d4ae0d0a198975973e593cb7f01699217
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b01c23153d8b84c3ae155af2f5e280f7f639257901005b25bdbb880e0d1af286d3b36db10fde6e66ee5c3446b0a29860e252cf93a89f63afe6204082d09086a4
|
7
|
+
data.tar.gz: 969b510081ba20a319e5930d5653f0062d4d6b145ab23939359d75a84fefd6713d807f817035da6310c668eaad929f2a4719eb92df516a702a6f38f1acbf3b34
|
data/README.MD
CHANGED
@@ -4,29 +4,6 @@ Removes metadata and editor data elements and attributes that are redundant
|
|
4
4
|
from SVG files. Can strip files so they are optimised for web use. Go to
|
5
5
|
[SVGO](https://github.com/svg/svgo) for more documentation on features.
|
6
6
|
|
7
|
-
## How this works
|
8
|
-
|
9
|
-
[`execjs`](https://github.com/rails/execjs) is used to run the Node SVGO as a
|
10
|
-
library. The SVGO library returns a JavaScript Promise, which is currently not
|
11
|
-
supported by `execjs` and probably never will be. `setTimeout` and sleep-like
|
12
|
-
functions are also disabled in `execjs` so we can't wait for the Promise to get
|
13
|
-
fulfilled. Therefore there is a small wrapper JavaScript in this repository
|
14
|
-
that calls all the components that SVGO is made up of, but without the
|
15
|
-
`Promise`. It also wraps up the configuration of plugins the way it is expected
|
16
|
-
by SVGO's components. Lastly `require` is not supported by `execjs` so all of
|
17
|
-
this is transpiled to one monolithic JavaScript file - that is completely
|
18
|
-
self-contained, using [browserify](http://browserify.org/).
|
19
|
-
|
20
|
-
__NOTE:__ `execjs` supports a variety of JavaSript runtimes, notably
|
21
|
-
[`therubyracer`](https://github.com/cowboyd/therubyracer), but `therubyracer`
|
22
|
-
depends on an ancient [`libv8`](https://github.com/cowboyd/libv8), which
|
23
|
-
doesn't support some of the modern syntax used in SVGO. Therefore `mini_racer`
|
24
|
-
(a drop in replacement for `therubyracer`) is a dependency, which uses a much
|
25
|
-
more recent `libv8`.
|
26
|
-
|
27
|
-
If you have [Node](https://nodejs.org/) installed you could also use that as a
|
28
|
-
runtime.
|
29
|
-
|
30
7
|
## How to use?
|
31
8
|
|
32
9
|
### As a library
|
@@ -75,7 +52,8 @@ svgo.optimize_file(svg_file)
|
|
75
52
|
# => <svg xmlns="http://www.w3.org/2000/svg" ...
|
76
53
|
```
|
77
54
|
|
78
|
-
You can also choose the plugins to use, you can either pass the exact plugins
|
55
|
+
You can also choose the plugins to use, you can either pass the exact plugins
|
56
|
+
you want with their configuration, or you can modify the default plugin list.
|
79
57
|
|
80
58
|
```ruby
|
81
59
|
require('svgo')
|
@@ -98,7 +76,9 @@ svgo = SvgOptimizer.new(options)
|
|
98
76
|
|
99
77
|
### As a CLI tool
|
100
78
|
|
101
|
-
Strictly speaking this mode is for testing only. But if you can't install
|
79
|
+
Strictly speaking this mode is for testing only. But if you can't install
|
80
|
+
NodeJS, and you do have a Ruby environment and you really need a CLI tool, you
|
81
|
+
might be able to squeeze out some optimised files from this utility.
|
102
82
|
|
103
83
|
``` bash
|
104
84
|
gem install svgo-ruby
|
@@ -124,6 +104,49 @@ docker run -i svgo < test/fixtures/ruby.svg > test/fixtures/ruby.optim.svg
|
|
124
104
|
-rw-r--r-- 1 user staff 23K Nov 5 22:12 ruby.svg
|
125
105
|
```
|
126
106
|
|
127
|
-
##
|
107
|
+
## How this works
|
108
|
+
|
109
|
+
[`execjs`](https://github.com/rails/execjs) is used to run the Node SVGO as a
|
110
|
+
library. The SVGO library returns a JavaScript Promise, which is currently not
|
111
|
+
supported by `execjs` and probably never will be. `setTimeout` and sleep-like
|
112
|
+
functions are also disabled in `execjs` so we can't wait for the Promise to get
|
113
|
+
fulfilled. Therefore there is a small wrapper JavaScript in this repository
|
114
|
+
that calls all the components that SVGO is made up of, but without the
|
115
|
+
`Promise`. It also wraps up the configuration of plugins the way it is expected
|
116
|
+
by SVGO's components. Lastly `require` is not supported by `execjs` so all of
|
117
|
+
this is transpiled to one monolithic JavaScript file - that is completely
|
118
|
+
self-contained, using [browserify](http://browserify.org/).
|
119
|
+
|
120
|
+
__NOTE:__ `execjs` supports a variety of JavaSript runtimes, notably
|
121
|
+
[`therubyracer`](https://github.com/cowboyd/therubyracer), but `therubyracer`
|
122
|
+
depends on an ancient [`libv8`](https://github.com/cowboyd/libv8), which
|
123
|
+
doesn't support some of the modern syntax used in SVGO. Therefore `mini_racer`
|
124
|
+
(a drop in replacement for `therubyracer`) is a dependency, which uses a much
|
125
|
+
more recent `libv8`.
|
126
|
+
|
127
|
+
If you have [Node](https://nodejs.org/) installed you could also use that as a
|
128
|
+
runtime.
|
129
|
+
|
130
|
+
### Transpiling Node SVGO
|
131
|
+
|
132
|
+
__TL;DR:__ A transpiled version of SVGO is included in the repository, so you
|
133
|
+
don't need to transpile anything.
|
134
|
+
|
135
|
+
Because `execjs` supports only self-contained modules, and does not allow
|
136
|
+
`require()`, `Promise` etc.. The SGVO library is wrapped in a JavaScript that
|
137
|
+
requires all the main parts of SVGO and makes an SVGO function without
|
138
|
+
JavaScript Promises. The wrapper is then transpiled to a self-contained module
|
139
|
+
using [browserify](http://browserify.org/).
|
140
|
+
|
141
|
+
The transpile command can be found in the `Rakefile`. Assuming you have
|
142
|
+
[Node](https://nodejs.org/) and [yarn](https://yarnpkg.com/en/) installed on
|
143
|
+
your system, you can then run:
|
144
|
+
|
145
|
+
``` bash
|
146
|
+
yarn install
|
147
|
+
rake
|
148
|
+
```
|
128
149
|
|
129
|
-
|
150
|
+
__Note__: if you do not have `yarn` you can run `npm install` instead, but if
|
151
|
+
you install Node modules often, you probably should do yourself a favour check
|
152
|
+
out [yarn](https://yarnpkg.com/en/).
|
data/lib/version.rb
CHANGED