copyicon.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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 ('1x' === subDir) {
  24. subDir = ''
  25. }
  26. if (subDir) {
  27. if (!fs.existsSync(path.resolve(dstDir, subDir))) {
  28. fs.mkdirSync(path.resolve(dstDir, subDir), { recursive: true })
  29. }
  30. }
  31. var dst = path.resolve(dstDir, subDir, fileName)
  32. if (force) {
  33. if (fs.existsSync(dst)) {
  34. fs.unlinkSync(dst)
  35. }
  36. }
  37. try {
  38. fs.copyFileSync(src, dst, fs.constants.COPYFILE_EXCL)
  39. console.log('\x1B[32m%s\x1B[39m', `${baseName}\t->\timages/${subDir ? (subDir + '/' + fileName) : fileName}`)
  40. } catch (e) {
  41. console.error('\x1B[90m%s\x1B[39m', `${src}\t->\t${dst}`)
  42. }
  43. }
  44. })
  45. }