UNPKG

quickgame-cli

Version:

quickgame cli

1 lines 3.05 kB
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault"),_toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")),_path=_interopRequireDefault(require("path")),_fsExtra=_interopRequireDefault(require("fs-extra")),_utils=require("../utils"),FILE_INCLUDE_EXT=[".png",".jpg",".jpeg",".gif",".svg",".json",".cer",".obj",".dae",".fbx",".mtl",".stl",".3ds",".mp3",".pvr",".wav",".plist",".ttf",".fnt",".gz",".ccz",".m4a",".mp4",".bmp",".atlas",".swf",".ani",".part",".proto",".bin",".sk",".mipmaps",".txt",".zip",".ogg",".silk",".dbbin",".dbmv",".etc",".lmat",".lm",".ls",".lh",".lani",".lav",".lsani",".ltc",".csv",".scene",".prefab",".lml",".lmani",".ktx",".dds",".xml"],EXCLUDE_FILES=["package.json","package-lock.json","babel.config.js",".eslintrc.js",".eslintignore"],EXCLUDE_DIRS=[".DS_Store","Thumbs.db",".idea","dist","sign","node_modules"];function ResourcePlugin(e){this.options=e}function updateManifest(e,t){return e.config=e.config||{},e.config.debug=t,e.type||(e.type="game"),e}ResourcePlugin.prototype.apply=function(e){var u=this.options,o=e.options,i=u.cocosWxGame,t=u.includeFileExt?u.includeFileExt.split(","):[],t=(FILE_INCLUDE_EXT.push.apply(FILE_INCLUDE_EXT,(0,_toConsumableArray2.default)(t)),u.ignoreDir&&u.ignoreDir.split(",")||[]);EXCLUDE_DIRS=EXCLUDE_DIRS.concat(t),e.hooks.watchRun.tapAsync("ResourcePlugin",function(e,t){Object.keys(o.entry).forEach(function(e){var t=o.entry[e];t instanceof Array&&!/app\.js/.test(e)&&-1!==t[0].indexOf("webpack-dev-server")&&t.shift()}),t()}),e.hooks.emit.tapAsync("ResourcePlugin",function(e,s){var t=u.projectPath,o=u.pathBuild,n=e.compiler.inputFileSystem,r=e.compiler.outputFileSystem,a=(i&&FILE_INCLUDE_EXT.unshift(".js"),(0,_utils.collectResFile)(t,o,FILE_INCLUDE_EXT,EXCLUDE_DIRS,EXCLUDE_FILES)),l=Object.keys(a).length;Object.keys(a).forEach(function(o){var i=a[o];_fsExtra.default.mkdirp(_path.default.dirname(o),function(){var e=n.statSync(i);e&&e.isFile()&&n.readFile(i,function(e,t){e&&_utils.colorconsole.log("### App Loader ### 复制资源文件(".concat(i,")失败:").concat(e.message)),r.writeFile(o,t,function(e){e&&_utils.colorconsole.log("### App Loader ### 复制资源文件(".concat(o,")失败:").concat(e.message)),0<--l||(_utils.colorconsole.log("### App Loader ### build目录构建完成"),s())})})})})}),e.hooks.emit.tapAsync("ResourcePlugin",function(e,t){var o=u.projectPath,i=u.pathBuild,o=_path.default.join(o,"manifest.json"),i=_path.default.join(i,"manifest.json");if(_fsExtra.default.existsSync(o)){try{var s=_fsExtra.default.readFileSync(o,"utf8"),n=JSON.parse(s)}catch(e){throw _utils.colorconsole.error("ERROR: 解析 manifest.json 文件出错 %s",e.message),e}o=!u.sign,s=(n=updateManifest(n,o),JSON.stringify(n,null,o?2:0));_fsExtra.default.writeFile(i,s,"utf8",function(e){e&&_utils.colorconsole.error("### App Loader ### 更新 %s 失败:%s",e.message),t()})}else _utils.colorconsole.error("### App Loader ### %s 下无 manifest.json 文件"),t()})},module.exports=ResourcePlugin;