mirror of
https://github.com/coreui/coreui-icons.git
synced 2025-08-31 20:11:51 +02:00
refactor: change file structure and icons
This commit is contained in:
@@ -1,22 +1,25 @@
|
||||
const fs = require('fs')
|
||||
console.log(process.argv.join(','))
|
||||
const directory = process.argv.join(',').includes('flags') ? 'flags/' :
|
||||
process.argv.join(',').includes('brands') ? 'brands/' : ''
|
||||
const dirnames = process.mainModule.filename.includes('pro') ?
|
||||
['solid', 'linear']
|
||||
: ['free', 'brand', 'flag']
|
||||
|
||||
let dirname = `${directory}svg/`
|
||||
fs.readdir(dirname, function(e, filenames) {
|
||||
if (e) {
|
||||
return
|
||||
}
|
||||
let contents = {}
|
||||
let names = []
|
||||
filenames.forEach(function(filename) {
|
||||
fs.readFile(dirname + filename, 'utf-8', function(e, content) {
|
||||
if (e) {
|
||||
return
|
||||
} else {
|
||||
let variableName = getVariableName(filename, directory)
|
||||
let jsFilename = filename.replace('.svg', '.js')
|
||||
let allNames = {}
|
||||
dirnames.forEach(setName => {
|
||||
const dirname = `svg/${setName}/`
|
||||
fs.readdir(dirname, (e, filenames) => {
|
||||
if (e) {
|
||||
return
|
||||
}
|
||||
let contents = {}
|
||||
let names = []
|
||||
filenames.forEach(filename => {
|
||||
fs.readFile(dirname + filename, 'utf-8', function (e, content) {
|
||||
if (e) {
|
||||
return
|
||||
}
|
||||
|
||||
const variableName = toCamel(filename.replace('.svg', ''))
|
||||
const jsFilename = filename.replace('.svg', '.js')
|
||||
const viewBox = getAttributeValue(content, 'viewBox').split(' ')
|
||||
const dimensions = `${viewBox[2]} ${viewBox[3]}`
|
||||
|
||||
@@ -25,8 +28,8 @@ fs.readdir(dirname, function(e, filenames) {
|
||||
iconData.push(dimensions)
|
||||
}
|
||||
const computedContent = content.replace(/(<svg([^>]+)>)|(<\/svg>)/ig, '')
|
||||
.replace(/\n/g, '').replace(/"/g, '\'')
|
||||
.replace('<!-- Generated by IcoMoon.io -->', '')
|
||||
.replace(/\n/g, '').replace(/"/g, '\'')
|
||||
.replace('<!-- Generated by IcoMoon.io -->', '')
|
||||
iconData.push(computedContent)
|
||||
|
||||
contents[variableName] = iconData
|
||||
@@ -42,28 +45,43 @@ fs.readdir(dirname, function(e, filenames) {
|
||||
})
|
||||
|
||||
fs.writeFile(
|
||||
`${directory}js/${jsFilename}`,
|
||||
`js/${setName}/${jsFilename}`,
|
||||
`export const ${importName} = ` + JSON.stringify(iconData),
|
||||
() => ''
|
||||
)
|
||||
}
|
||||
|
||||
})
|
||||
})
|
||||
setTimeout(() => {
|
||||
fs.writeFile(
|
||||
`js/${setName}/${setName}-set.js`,
|
||||
`export const ${setName}Set = ` + JSON.stringify(contents),
|
||||
() => ''
|
||||
)
|
||||
fs.writeFile(
|
||||
`js/${setName}/index.js`,
|
||||
getImports(names, setName),
|
||||
() => ''
|
||||
)
|
||||
allNames[setName] = names
|
||||
}, 1000)
|
||||
})
|
||||
setTimeout(() => {
|
||||
fs.writeFile(
|
||||
`${directory}js/icon-set.js`,
|
||||
'export const iconSet = ' + JSON.stringify(contents),
|
||||
() => ''
|
||||
)
|
||||
fs.writeFile(
|
||||
`${directory}index.js`,
|
||||
getImports(names),
|
||||
() => ''
|
||||
)
|
||||
}, 1000)
|
||||
|
||||
})
|
||||
|
||||
setTimeout(() => {
|
||||
let imports = ''
|
||||
Object.keys(allNames).forEach(set => {
|
||||
imports += getImports(allNames[set], set, true)
|
||||
imports += '\n\n\n'
|
||||
})
|
||||
fs.writeFile(
|
||||
`index.js`,
|
||||
imports,
|
||||
() => ''
|
||||
)
|
||||
}, 3000)
|
||||
|
||||
|
||||
// const toPascalCase = function (name) {
|
||||
// return name.match(/[A-Za-z0-9]+/gi)
|
||||
// .map(function (word) {
|
||||
@@ -79,13 +97,13 @@ const getAttributeValue = (string, attribute) => {
|
||||
.replace(/"/g, '')
|
||||
}
|
||||
|
||||
function getVariableName (filename, directory) {
|
||||
if (directory.includes('flags')) {
|
||||
return filename.replace('.svg', '').replace(/-/g, '').toUpperCase()
|
||||
} else {
|
||||
return toCamel(filename.replace('.svg', ''))
|
||||
}
|
||||
}
|
||||
// function getVariableName (filename, directory) {
|
||||
// if (directory.includes('flags')) {
|
||||
// return filename.replace('.svg', '').replace(/-/g, '').toUpperCase()
|
||||
// } else {
|
||||
// return toCamel(filename.replace('.svg', ''))
|
||||
// }
|
||||
// }
|
||||
|
||||
function toCamel (str) {
|
||||
return str.replace(/([-_][a-z0-9])/ig, ($1) => {
|
||||
@@ -101,11 +119,12 @@ function validate(str) {
|
||||
}
|
||||
}
|
||||
|
||||
function getImports(names) {
|
||||
const defaultImport = "import { iconSet } from './js/icon-set.js' \n"
|
||||
const defaultExport = "export { iconSet } \n\n\n"
|
||||
function getImports(names, setName, deep = false) {
|
||||
const folder = deep ? `/js/${setName}/` : '/'
|
||||
const defaultImport = `import { ${setName}Set } from '.${folder}${setName}-set.js' \n`
|
||||
const defaultExport = `export { ${setName}Set } \n\n`
|
||||
const importString = names.map(name => {
|
||||
return `import { ${name.importName} } from './js/${name.jsFilename}'`
|
||||
return `import { ${name.importName} } from '.${folder}${name.jsFilename}'`
|
||||
}).join('\n')
|
||||
const exportString = names.map(name => {
|
||||
return `export { ${name.importName} }`
|
||||
|
Reference in New Issue
Block a user