copyicon.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/usr/local/bin/node
  2. const fs = require('fs')
  3. const path = require('path')
  4. let baseDir = path.resolve(process.argv[2])
  5. var force = process.argv.indexOf('-f') > -1
  6. console.log("force:", force)
  7. copyAssets(baseDir)
  8. console.log('done')
  9. function copyAssets(srcDir) {
  10. fs.readdirSync(srcDir).forEach(function (ele, index) {
  11. if (/\(\d\)/.test(ele)) {
  12. return
  13. }
  14. var subPath = path.resolve(srcDir, ele)
  15. var info = fs.statSync(subPath)
  16. if (!info.isDirectory()) {
  17. var src = path.resolve(srcDir, ele)
  18. var dstDir = path.resolve(__dirname, 'images')
  19. var baseName = path.basename(src)
  20. var fileName = baseName.replace(/@\dx/g, '')
  21. var execRes = /@(\dx)/.exec(baseName)
  22. var subDir = execRes ? execRes[1] : ''
  23. if (subDir) {
  24. if (!fs.existsSync(path.resolve(dstDir, subDir))) {
  25. fs.mkdirSync(path.resolve(dstDir, subDir), { recursive: true })
  26. }
  27. }
  28. var dst = path.resolve(dstDir, subDir, fileName)
  29. if (force) {
  30. if (fs.existsSync(dst)) {
  31. fs.unlinkSync(dst)
  32. }
  33. }
  34. try {
  35. fs.copyFileSync(src, dst, fs.constants.COPYFILE_EXCL)
  36. console.log('\x1B[32m%s\x1B[39m', `${baseName}\t->\timages/${subDir ? (subDir + '/' + fileName) : fileName}`)
  37. } catch (e) {
  38. console.error('\x1B[90m%s\x1B[39m', `${src}\t->\t${dst}`)
  39. }
  40. }
  41. })
  42. }