diff options
| -rw-r--r-- | README.md | 42 | ||||
| -rw-r--r-- | gulpfile.js | 51 | 
2 files changed, 76 insertions, 17 deletions
| @@ -217,7 +217,7 @@ The default settings if you have not defined the file will be:  {    "includeIcons": [],    "fontForge": "fontforge", -  "strokeWidth": 2 +  "strokeWidth": null  }  ``` @@ -225,16 +225,16 @@ The fontforge executable needs to be in the path or you can set the path to the  ```JSON  { -  "fontForge":"/Applications/FontForge.app/Contents/MacOS/FontForge" +  "fontForge": "/Applications/FontForge.app/Contents/MacOS/FontForge"  }  ``` +  To compile the fonts run:  ```sh  npm run build-iconfont  ``` -By default the stroke width is 2. You can change the stroke width in the compile-options.json  - +By default the stroke width is 2. You can change the stroke width in the `compile-options.json`  ```JSON  {    "strokeWidth": 1.5, @@ -245,9 +245,39 @@ To reduce the font file size you can choose to compile a sub set of icons. When  ```JSON  { -  "includeIcons":["alert-octagon","alert-triangle"] +  "includeIcons": ["alert-octagon", "alert-triangle"] +} +``` + +Optional property `includeCategories` - an array or string of icon categories to include, category names are case-issensetive. +```JSON +{ +  "includeCategories": ["Devices", "System"] +} +``` +or +```JSON +{ +  "includeCategories": "Devices System" +} +``` + +Optional property `excludeIcons` - an array of icon names using to exclude some category icons: +```JSON +{ +  "includeCategories": ["system"], +  "excludeIcons": ["adjustments"]  } -```   +``` + +Complex solution: +```JSON +{ +  "includeIcons": ["alert-octagon", "alert-triangle"], +  "includeCategories": ["devices", "system"], +  "excludeIcons": ["adjustments"] +} +```  ### Svelte diff --git a/gulpfile.js b/gulpfile.js index 037f7692..2b2c5d0f 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -18,7 +18,7 @@ const gulp = require('gulp'),  	svgpath = require('svgpath'),  	svgr = require('@svgr/core').default; -let compileOptions = { +const compileOptions = {  	includeIcons: [],  	strokeWidth: null,  	fontForge: "fontforge" @@ -26,28 +26,57 @@ let compileOptions = {  if (fs.existsSync('./compile-options.json')) {  	try { -		let tempOptions = require('./compile-options'); -		if (typeof tempOptions!="object") { +		const tempOptions = require('./compile-options.json'); +		if (typeof tempOptions !== "object") {  			throw "Compile options file does not contain an json object";  		} -		if (typeof tempOptions.includeIcons!="undefined") { +		if (typeof tempOptions.includeIcons !== "undefined") {  			if (!Array.isArray(tempOptions.includeIcons)) {  				throw "property inludeIcons is not an array";  			} -			compileOptions.includeIcons= tempOptions.includeIcons; +			compileOptions.includeIcons = tempOptions.includeIcons;  		} -		if (typeof tempOptions.strokeWidth!="undefined") { -			if (typeof tempOptions.strokeWidth!="string" && typeof tempOptions.strokeWidth!="number") { + +		if (typeof tempOptions.includeCategories !== "undefined") { +			if (typeof tempOptions.includeCategories === "string") { +				tempOptions.includeCategories = tempOptions.includeCategories.split(' '); +			} +            if (!Array.isArray(tempOptions.includeCategories)) { +				throw "property includeCategories is not an array or string"; +			} +            const tags = Object.entries(require('./tags.json')); +        	tempOptions.includeCategories.forEach(function (category) { +                category = category.charAt(0).toUpperCase() + category.slice(1); +				for (const [icon, data] of tags) { +                    if (data.category === category && compileOptions.includeIcons.indexOf(icon) === -1) { +                        compileOptions.includeIcons.push(icon); +                    } +                } +			}); +		} + +		if (typeof tempOptions.excludeIcons !== "undefined") { +            if (!Array.isArray(tempOptions.excludeIcons)) { +				throw "property excludeIcons is not an array"; +			} +            compileOptions.includeIcons = compileOptions.includeIcons.filter(function (icon) { +                return tempOptions.excludeIcons.indexOf(icon) === -1;  +            }); +        } + +		if (typeof tempOptions.strokeWidth !== "undefined") { +			if (typeof tempOptions.strokeWidth !== "string" && typeof tempOptions.strokeWidth !== "number") {  				throw "property strokeWidth is not a string or number";  			} -			compileOptions.strokeWidth=tempOptions.strokeWidth.toString(); +			compileOptions.strokeWidth = tempOptions.strokeWidth.toString();  		} -		if (typeof tempOptions.fontForge!="undefined") { -			if (typeof tempOptions.fontForge!="string") { + +		if (typeof tempOptions.fontForge !== "undefined") { +			if (typeof tempOptions.fontForge !== "string") {  				throw "property fontForge is not a string";  			} -		  	compileOptions.fontForge=tempOptions.fontForge; +		  	compileOptions.fontForge = tempOptions.fontForge;  		}  	} catch (error) { | 
