copyicon.js 1.7 KB

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