mirror of
https://github.com/coreui/coreui-icons.git
synced 2025-08-14 12:44:00 +02:00
feat: add svg to js file builder.
This commit is contained in:
63
build/iconsScript.js
Normal file
63
build/iconsScript.js
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
let fs = require('fs')
|
||||||
|
let dirname = 'svg/'
|
||||||
|
fs.readdir(dirname, function(e, filenames) {
|
||||||
|
if (e) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let contents = {}
|
||||||
|
filenames.forEach(function(filename) {
|
||||||
|
fs.readFile(dirname + filename, 'utf-8', function(e, content) {
|
||||||
|
if (e) {
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
let name = filename.replace('.svg', '')
|
||||||
|
let computedContent = content.replace(/(<svg([^>]+)>)|(<\/svg>)/ig, '')
|
||||||
|
.replace(/\n/g, '')
|
||||||
|
.split('</title>').pop()
|
||||||
|
|
||||||
|
contents[name] = computedContent
|
||||||
|
|
||||||
|
fs.writeFile(
|
||||||
|
`js/${name}.js`,
|
||||||
|
`export const ${toPascalCase(name)} = ` + JSON.stringify(computedContent),
|
||||||
|
() => ''
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
setTimeout(() => {
|
||||||
|
fs.writeFile(
|
||||||
|
'js/iconsGenerated.js',
|
||||||
|
'export const Icons = ' + JSON.stringify(contents),
|
||||||
|
() => ''
|
||||||
|
)
|
||||||
|
fs.writeFile(
|
||||||
|
'js/index.js',
|
||||||
|
getImports(Object.keys(contents)),
|
||||||
|
() => ''
|
||||||
|
)
|
||||||
|
}, 1000)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
const toPascalCase = function (name) {
|
||||||
|
return name.match(/[A-Za-z0-9]+/gi)
|
||||||
|
.map(function (word) {
|
||||||
|
return word.charAt(0).toUpperCase() + word.substr(1).toLowerCase()
|
||||||
|
})
|
||||||
|
.join('')
|
||||||
|
}
|
||||||
|
|
||||||
|
function getImports(filenames) {
|
||||||
|
const defaultImport = "import { Icons } from './iconsGenerated.js' \n"
|
||||||
|
const defaultExport = "export default Icons \n\n\n"
|
||||||
|
const importString = filenames.map(name => {
|
||||||
|
let computedName = toPascalCase(name)
|
||||||
|
return `import { ${computedName} } from './${name}.js'`
|
||||||
|
}).join('\n')
|
||||||
|
const exportString = filenames.map(name => {
|
||||||
|
let computedName = toPascalCase(name)
|
||||||
|
return `export { ${computedName} }`
|
||||||
|
}).join('\n')
|
||||||
|
return defaultImport + defaultExport + importString + '\n' + exportString
|
||||||
|
}
|
@@ -9,7 +9,8 @@
|
|||||||
"css-prefix": "postcss --config build/postcss.config.js --replace \"css/*.css\" \"!css/*.min.css\"",
|
"css-prefix": "postcss --config build/postcss.config.js --replace \"css/*.css\" \"!css/*.min.css\"",
|
||||||
"css-minify": "cleancss --level 1 --source-map --source-map-inline-sources --output css/coreui-icons.min.css css/coreui-icons.css",
|
"css-minify": "cleancss --level 1 --source-map --source-map-inline-sources --output css/coreui-icons.min.css css/coreui-icons.css",
|
||||||
"dist": "npm-run-all --parallel css",
|
"dist": "npm-run-all --parallel css",
|
||||||
"watch-css": "nodemon --ignore dist/ -e scss -x \"npm run css\""
|
"watch-css": "nodemon --ignore dist/ -e scss -x \"npm run css\"",
|
||||||
|
"iconsJsBuild": "node build/iconsScript.js"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
Reference in New Issue
Block a user