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('运行成功') |