purgetss
Version:
A package that simplifies mobile app creation for Titanium developers.
66 lines (47 loc) • 1.76 kB
JavaScript
const fs = require('fs')
const _ = require('lodash')
const read = require('read-css')
const logger = require('./logger')
if (!fs.existsSync('./dist')) {
fs.mkdirSync('./dist')
}
(function constructor() {
'use strict'
read('./node_modules/@fortawesome/fontawesome-free/css/all.css', (err, data) => {
if (err) throw err
const rules = _.map(data.stylesheet.rules, rule => {
if (rule.type === 'rule' && rule.selectors && rule.declarations[0].value.includes('"\\')) {
return {
selector: rule.selectors[0].replace('::before', '').replace(':before', '').replace('.', ''),
property: ('0000' + rule.declarations[0].value.replace('\"\\', '').replace('\"', '')).slice(-4)
}
}
})
let fontawesome = fs.readFileSync('./lib/templates/fontawesome/free-template.js', 'utf8')
fontawesome += '\n' + fs.readFileSync('./lib/templates/icon-functions.js', 'utf8')
let exportIcons = '\nconst icons = {\n'
_.each(rules, rule => {
if (rule) {
exportIcons += `\t'${prettifyFontName(rule.selector)}': '\\u${rule.property}',\n`
}
})
exportIcons += '};\n'
exportIcons += 'exports.icons = icons\n'
exportIcons += '\nconst iconKeys = Object.keys(icons)\n'
fontawesome += exportIcons
fs.writeFileSync('./dist/fontawesome.js', fontawesome, _err => {
throw _err
})
logger.file('./dist/fontawesome.js')
})
}())
function prettifyFontName(str) {
str = str.replace('fa-', '')
const temp = str.split('-'); let i; let pretty
for (i = 0; i < temp.length; i++) {
temp[i] = temp[i].charAt(0).toUpperCase() + temp[i].slice(1)
}
pretty = temp.join('')
pretty = pretty.replace(/^.{1}/g, pretty[0].toLowerCase())
return pretty
}