diff --git a/bin/__tests__/build-icons-object.test.js b/bin/__tests__/build-icons-object.test.js
index 0a422f3..b13eab9 100644
--- a/bin/__tests__/build-icons-object.test.js
+++ b/bin/__tests__/build-icons-object.test.js
@@ -3,9 +3,9 @@ import buildIconsObject from '../build-icons-object';
const SVG_FILES = {
'icon1.svg':
- '',
+ '',
'icon2.svg':
- '',
+ '',
};
function getSvg(svgFile) {
diff --git a/bin/build-icons-object.js b/bin/build-icons-object.js
index 920b0a3..3455cd0 100644
--- a/bin/build-icons-object.js
+++ b/bin/build-icons-object.js
@@ -1,6 +1,7 @@
/* eslint-disable import/no-extraneous-dependencies */
import path from 'path';
import cheerio from 'cheerio';
+import { minify } from 'html-minifier';
/**
* Build an object in the format: `{ : }`.
@@ -28,7 +29,7 @@ function buildIconsObject(svgFiles, getSvg) {
*/
function getSvgContents(svg) {
const $ = cheerio.load(svg);
- return $('svg').html();
+ return minify($('svg').html(), { collapseWhitespace: true });
}
export default buildIconsObject;
diff --git a/package-lock.json b/package-lock.json
index 2b0dfb6..3896e02 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1338,6 +1338,16 @@
"integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
"dev": true
},
+ "camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+ "dev": true,
+ "requires": {
+ "no-case": "2.3.2",
+ "upper-case": "1.1.3"
+ }
+ },
"camelcase": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
@@ -1450,6 +1460,15 @@
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz",
"integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0="
},
+ "clean-css": {
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz",
+ "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=",
+ "dev": true,
+ "requires": {
+ "source-map": "0.5.7"
+ }
+ },
"cli-cursor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
@@ -4445,6 +4464,12 @@
"sntp": "2.1.0"
}
},
+ "he": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
+ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
+ "dev": true
+ },
"hmac-drbg": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
@@ -4496,6 +4521,40 @@
"whatwg-encoding": "1.0.3"
}
},
+ "html-minifier": {
+ "version": "3.5.6",
+ "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.6.tgz",
+ "integrity": "sha512-88FjtKrlak2XjczhxrBomgzV4jmGzM3UnHRBScRkJcmcRum0kb+IwhVAETJ8AVp7j0p3xugjSaw9L+RmI5/QOA==",
+ "dev": true,
+ "requires": {
+ "camel-case": "3.0.0",
+ "clean-css": "4.1.9",
+ "commander": "2.11.0",
+ "he": "1.1.1",
+ "ncname": "1.0.0",
+ "param-case": "2.1.1",
+ "relateurl": "0.2.7",
+ "uglify-js": "3.1.10"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.10.tgz",
+ "integrity": "sha512-0ul3BWx79We0mIPM1l72oqpMtWL0TVMnKZZY6FaHPy3tDzCZGXeFxw5N1ZvtkmQsLI+ECR/tUQyIYbyHUcuvEw==",
+ "dev": true,
+ "requires": {
+ "commander": "2.11.0",
+ "source-map": "0.6.1"
+ }
+ }
+ }
+ },
"htmlparser2": {
"version": "3.9.2",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
@@ -6232,6 +6291,12 @@
"signal-exit": "3.0.2"
}
},
+ "lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
+ "dev": true
+ },
"lru-cache": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
@@ -6549,6 +6614,15 @@
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true
},
+ "ncname": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz",
+ "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=",
+ "dev": true,
+ "requires": {
+ "xml-char-classes": "1.0.0"
+ }
+ },
"nerf-dart": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz",
@@ -6561,6 +6635,15 @@
"integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=",
"dev": true
},
+ "no-case": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
+ "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "dev": true,
+ "requires": {
+ "lower-case": "1.1.4"
+ }
+ },
"node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -7025,6 +7108,15 @@
"integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
"dev": true
},
+ "param-case": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
+ "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+ "dev": true,
+ "requires": {
+ "no-case": "2.3.2"
+ }
+ },
"parse-asn1": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz",
@@ -7539,6 +7631,12 @@
}
}
},
+ "relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
+ "dev": true
+ },
"remove-trailing-separator": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
@@ -8777,6 +8875,12 @@
"integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=",
"dev": true
},
+ "upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+ "dev": true
+ },
"url": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
@@ -9114,6 +9218,12 @@
"signal-exit": "3.0.2"
}
},
+ "xml-char-classes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz",
+ "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=",
+ "dev": true
+ },
"xml-name-validator": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz",
diff --git a/package.json b/package.json
index 9220ad0..c988916 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
"eslint": "^4.0.0",
"eslint-config-airbnb-base": "^11.2.0",
"eslint-plugin-import": "^2.5.0",
+ "html-minifier": "^3.5.6",
"husky": "^0.13.4",
"jest": "^21.2.1",
"npm-run-all": "^4.1.2",