resplugin.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132
  1. /**
  2. * 示例自定义插件,您可以查阅 http://developer.egret.com/cn/github/egret-docs/Engine2D/projectConfig/cmdExtensionPlugin/index.html
  3. * 了解如何开发一个自定义插件
  4. */
  5. const crc32 = require("./crc32");
  6. export class ResPlugin implements plugins.Command {
  7. // 版本控制信息
  8. private versionConfig = {};
  9. // 需要进行版本控制的文件夹
  10. private versionPath = "resource/assets/";
  11. // 版本信息保存路径,建议放入resource包里面,因为这个文件每次都需要加载,不需要放在cdn上。
  12. private versionConfigPath = "resource/version.json";
  13. constructor() {
  14. }
  15. async onFile(file: plugins.File) {
  16. var path = file.origin;
  17. //对resource/assets下面的资源进行版本控制
  18. if (path.indexOf(this.versionPath) != -1 && (file.extname === ".mp3" || file.extname === ".fnt" || file.extname === ".json" || file.extname === ".png" || file.extname === ".jpg")) {
  19. path = path.replace(this.versionPath, "");
  20. this.versionConfig[path] = crc32(file.contents.toString());
  21. // 原始的文件夹+crc32码+后缀扩展名
  22. file.path = this.versionPath + this.versionConfig[path] + file.extname;
  23. }
  24. return file;
  25. }
  26. async onFinish(commandContext: plugins.CommandContext) {
  27. commandContext.createFile(this.versionConfigPath, new Buffer(JSON.stringify(this.versionConfig)));
  28. }
  29. }