UNPKG

quickgame-cli

Version:

quickgame cli

1 lines 5.56 kB
var projectPath,manifestJson,_interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault"),_path=_interopRequireDefault(require("path")),_fs=_interopRequireDefault(require("fs")),_del=_interopRequireDefault(require("del")),_zipPlugin=_interopRequireDefault(require("./plugin/zip-plugin")),_resourcePlugin=_interopRequireDefault(require("./plugin/resource-plugin")),_notifyPlugin=_interopRequireDefault(require("./plugin/notify-plugin")),_utils=require("./utils"),_requirePlugin=_interopRequireDefault(require("./plugin/require-plugin")),excludeDir=[".DS_Store","Thumbs.db",".idea","build","dist","sign","node_modules"],MAIN_PKG_NAME="base",RPKS_SUPPORT_VERSION_FROM=1040;function checkConfig(e,t,a){_fs.default.existsSync(a)?validateManifest(e,t):_utils.colorconsole.error("项目 ".concat(a," 下找不到入口文件 main.js"))}function validateManifest(e,t){t.icon||_utils.colorconsole.error("manifest.json 中未配置图标icon"),t.package||_utils.colorconsole.error("manifest.json 未定义包名(package)");t=t.subpackages;!e.disableSubpackages&&t&&1<t.length&&validateManifestSubpackages(t)}function useStrictMode(e){var t,a=_path.default.join(projectPath,"package.json");_fs.default.existsSync(a)?(t=JSON.parse(_fs.default.readFileSync(a)),e?t.babel&&(delete t.babel,_fs.default.writeFileSync(a,JSON.stringify(t,null,"\t")),console.info('编译代码进行严格模式声明:"use strict"')):t.babel||(t.babel={plugins:["babel-plugin-transform-remove-strict-mode"]},_fs.default.writeFileSync(a,JSON.stringify(t,null,"\t")))):console.info("请查看 ".concat(a," 路径下是否存在package.json文件"))}function findUxFilesByManifest(e,t){var a=[],o=(a.push({resource:"main.js"}),t.subpackages);return t&&o&&o.forEach(function(e){a.push(e)}),a}function collectFiles(e,o){var n=_path.default.resolve(projectPath,e),s=new RegExp("(".concat(excludeDir.join("|"),")"));_fs.default.readdirSync(n).forEach(function(e){var t,a;e.match(s)||(t=_path.default.resolve(n,e),(a=_fs.default.statSync(t)).isFile()&&".js"===_path.default.extname(e)&&!e.match(/cocos.*/g)?(t=_path.default.relative(projectPath,t).replace(/\\/,"/"),o.push({resource:t})):a.isDirectory()&&collectFiles(t,o))})}function buildWebpackEntries(e){var o,n={};return e.forEach(function(e){var e=e.resource||e.root,t=_path.default.extname(e),a=e.replace(t,"");o=t?(t=e.replace(t,""),_path.default.join(projectPath,t)):(/\.js$/.test(t=e)?t=e:/\/$/.test(e)?(t=e+"main.js",a=e+"main"):_utils.colorconsole.throw("manifest.json中的文件路劲配置存在问题".concat(e)),_path.default.join(projectPath,t)),n[a]=o}),n}function getJson(e){var t;return(t=_fs.default.existsSync(e)?JSON.parse(_fs.default.readFileSync(e)):t)||{}}function validateManifestSubpackages(e){var a,o,n,s,i=[],r=[];e.forEach(function(e,t){a=e.name,o=e.resource||e.root,n=o&&_path.default.join(projectPath,o),s=t+1,a?a===MAIN_PKG_NAME?_utils.colorconsole.throw("第".concat(s,"分包的名字'").concat(a,"'是主包保留名,请修改")):-1<i.indexOf(a)?_utils.colorconsole.throw("第".concat(s,"分包的名字'").concat(a,"'已存在,请修改")):i.push(a):_utils.colorconsole.throw("第".concat(s,"分包的名字不能为空,请添加")),o?-1<r.indexOf(o)?_utils.colorconsole.throw("第".concat(s,"分包的资源'").concat(o,"'已被使用,请修改")):_fs.default.existsSync(n)||_utils.colorconsole.throw("第".concat(s,"分包的资源'").concat(o,"', 文件目录'").concat(n,"'不存在,请修改")):_utils.colorconsole.throw("第".concat(s,"分包的资源名不能为空,请添加"))});e=manifestJson.minPlatformVersion;parseInt(e)<RPKS_SUPPORT_VERSION_FROM&&_utils.colorconsole.warn("项目已配置分包,若想使用分包功能,请确保平台版本 >= ".concat(RPKS_SUPPORT_VERSION_FROM))}module.exports=function(e,t){var a=2<arguments.length&&void 0!==arguments[2]?arguments[2]:"",o=(projectPath=a||process.cwd(),_path.default.resolve(projectPath,"build")),n=_path.default.resolve(projectPath,"dist"),s=_path.default.resolve(projectPath,"manifest.json"),s={appPackageName:(manifestJson=getJson(s)).package},i=_path.default.join(projectPath,"main.js");checkConfig(e,manifestJson,i);var i=buildWebpackEntries(findUxFilesByManifest(e.cocosWxGame,manifestJson)),r=(e.server||_del.default.sync([n,o]),useStrictMode(e.strictMode),"production"===t),l=r?"release":"debug",c=!r&&"source-map",u=e.watch||!1,p=manifestJson.subpackages,t={mode:t,entry:i,output:{path:o,filename:"[name].js"},context:a||_path.default.resolve(__dirname),module:{rules:[]},watch:u,watchOptions:{ignored:/node_modules/},devtool:c,resolve:{modules:["./","node_modules"]},node:{global:!1},resolveLoader:{modules:[_path.default.resolve(__dirname,"./loaders"),"node_modules"]},plugins:[new _zipPlugin.default({name:manifestJson.package,versionCode:manifestJson.versionCode,projectPath:projectPath,output:n,pathBuild:o,sign:l,priorities:["manifest.json","main.js"],subpackages:p,copyRpk:e.copyRpk,disableStreamPack:e.disableStreamPack,disableSubpackages:e.disableSubpackages}),new _resourcePlugin.default({pathBuild:o,sign:r,projectPath:projectPath,ignoreDir:e.ignore,cocosWxGame:e.cocosWxGame,includeFileExt:e.includeFileExt,subpackages:p}),new _requirePlugin.default({subpackages:p})],externals:[function(e,t){e=e.request;if(e.match(/@\w+(.\w+)+/g))return t(null,'$require$("@module/'.concat(e.slice(1),'")'));t()}]};return e.jestMode||t.plugins.push(new _notifyPlugin.default),e.cocosWxGame&&t.module.rules.push({parser:{system:!1}},{test:/\.js$/,use:{loader:"resolveRequire"}}),{webpackConf:t,exOptions:s}};