@aiot-toolkit/packager
Version:
@aiot-toolkit/packager
3 lines (2 loc) • 3 kB
JavaScript
;var _fs=_interopRequireDefault(require("fs")),_path=_interopRequireDefault(require("path")),_sharedUtils=require("@aiot-toolkit/shared-utils"),_compilationConfig=require("@aiot-toolkit/shared-utils/compilation-config");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let staticResources=[];function getCurrentDirFiles(e,t=[]){try{return _fs.default.readdirSync(e).forEach((o=>{const s=_path.default.join(e,o);_fs.default.statSync(s).isDirectory()?getCurrentDirFiles(s,t):t.push(s)})),t}catch(e){_sharedUtils.colorconsole.error(`getCurrentDirFiles method error, error message: ${e.message}`)}}function findStaticResources(e){let t=[];for(let o=0,s=e.length;o<s;o++){const s=getCurrentDirFiles(e[o]);if(s&&s.length)for(let e=0,o=s.length;e<o;e++){const o=_path.default.extname(s[e]);".ux"!==o&&".vue"!==o&&(".html"!==o?t.push(s[e]):t.unshift(s[e]))}}return t}async function copyMinaJssdkToRpk(){return new Promise(((e,t)=>{try{const t=`${this.options.cwd}/node_modules/mina-jssdk/lib/index.js`,o=`${this.options.cwd}/build/mina-jssdk.js`,s=_fs.default.createWriteStream(o);_sharedUtils.colorconsole.log(`Copy file ${t}`),_fs.default.createReadStream(t).pipe(s),_sharedUtils.colorconsole.log(`Copy to ${o}`),s.on("finish",e)}catch(e){_sharedUtils.colorconsole.error("CopyStaticResourcesPlugin of error message: ",e),t(e.message?e.message:"unknown error")}}))}function CopyStaticResourcesPlugin(e){this.options=e,this.staticDir=_compilationConfig.compileOptionsObject.enableMinaH5?"Web":"src/Web",this.pagesList=[`${this.options.cwd}/${this.staticDir}`]}CopyStaticResourcesPlugin.prototype.apply=function(e){const t=this;staticResources=findStaticResources(t.pagesList),e.hooks.afterCompile.tap("CopyStaticResourcesPlugin",(function(e){if(!staticResources.length)return;let t=[...e.fileDependencies,...staticResources];e.fileDependencies=t})),e.hooks.afterEmit.tapAsync("CopyStaticResourcesPlugin",(function(e,o){t.copyFile(o)}))},CopyStaticResourcesPlugin.prototype.copyFile=function(e){if(!staticResources.length)return void e();const t=Array.from(staticResources,(e=>{try{return new Promise(((t,o)=>{const s=e.substring(this.options.cwd.length),i=_compilationConfig.compileOptionsObject.enableMinaH5?_path.default.join(this.options.cwd,"build",s):e.replace("src","build"),r=_path.default.dirname(i);_fs.default.existsSync(r)||_fs.default.mkdirSync(r,{recursive:!0});let n=_fs.default.createWriteStream(i);_sharedUtils.colorconsole.log(`Copy file ${e}`),_fs.default.createReadStream(e).pipe(n),_sharedUtils.colorconsole.log(`Copy to ${i}`),n.on("error",(e=>{o(e)})),n.on("finish",(()=>{t()}))}))}catch(e){return Promise.reject(e)}}));Promise.all(t).then((async()=>{_compilationConfig.compileOptionsObject.enableMinaH5&&await copyMinaJssdkToRpk.call(this),e()})).catch((e=>{_sharedUtils.colorconsole.error(`CopyStaticResourcesPlugin of error message: ${e.message}`)}))},module.exports=CopyStaticResourcesPlugin;
//# sourceMappingURL=copy-static-resources-plugin.js.map