50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
|
const path = require('path')
|
||
|
const fs = require('fs')
|
||
|
|
||
|
const fileDest = path.join(__dirname, '../src/assets/svg')
|
||
|
const targetDest = path.join(__dirname, '../src/config/image.js')
|
||
|
|
||
|
const run = (dir) => {
|
||
|
let dirs = fs.readdirSync(dir)
|
||
|
dirs.forEach(item => {
|
||
|
let cur = path.join(dir, item)
|
||
|
if (fs.statSync(cur).isDirectory()) {
|
||
|
walkDir(cur, item)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
const list = []
|
||
|
const importList = []
|
||
|
const walkDir = (dir, item) => {
|
||
|
let files = fs.readdirSync(dir)
|
||
|
let name = files.find((file) => {
|
||
|
return !/\./.test(file)
|
||
|
})
|
||
|
let fileList = files.filter((file) => {
|
||
|
return /\.svg$/.test(file)
|
||
|
})
|
||
|
let itemList = []
|
||
|
fileList.forEach((file) => {
|
||
|
let fileName = item + '_' + file.replace(/\.svg$/, '').replaceAll('-', '')
|
||
|
importList.push(`import ${fileName} from '../assets/svg/${item}/${file}'`)
|
||
|
itemList.push({
|
||
|
url: fileName,
|
||
|
width: 100,
|
||
|
height: 100
|
||
|
})
|
||
|
})
|
||
|
list.push({
|
||
|
name,
|
||
|
list: itemList
|
||
|
})
|
||
|
const content = `
|
||
|
// 该文件请运行npm run createNodeImageList命令自动生成
|
||
|
${importList.join('\n')}
|
||
|
export default ${JSON.stringify(list, null, 2).replace(/(url":\s*)"([^"]+)"(,)/g, '$1$2$3')}
|
||
|
`
|
||
|
fs.writeFileSync(targetDest, content)
|
||
|
}
|
||
|
|
||
|
run(fileDest)
|
||
|
console.log('运行成功')
|