UNPKG

@planjs/webpack-deploy-plugin

Version:

The webpack plugin handles various uploads of front-end files

1 lines 4.89 kB
"use strict";var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard").default,_interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault").default;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator")),_createForOfIteratorHelper2=_interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper")),_objectSpread2=_interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")),_asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")),_classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")),_createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass")),_defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty")),_webpack=require("webpack"),_ossUploadTool=require("oss-upload-tool"),_multimatch=_interopRequireDefault(require("multimatch")),_schemaUtils=require("schema-utils"),_shelljs=_interopRequireDefault(require("shelljs")),_rsync=_interopRequireWildcard(require("./rsync")),_const=require("./const"),schema=require("./options.json"),WebpackDeployPlugin=function(){function e(r){var t=this;(0,_classCallCheck2.default)(this,e),(0,_defineProperty2.default)(this,"name",_const.pluginName),(0,_defineProperty2.default)(this,"options",void 0),(0,_defineProperty2.default)(this,"canDeploy",!0),(0,_defineProperty2.default)(this,"apply",(function(e){var r=e.options,a=r.output.path,o=r.context;e.hooks.run.tap(_const.pluginName,(function(){var e;"rsync"===(null===(e=t.target)||void 0===e?void 0:e.type)&&(0,_rsync.checkRsync)().catch((function(){t.canDeploy=!1,log("Rsync is not supported, it needs to be installed first, this compilation will not be deployed, it is recommended to cancel the installation of rsync first.")}))})),e.hooks.done.tapPromise(t.name,function(){var e=(0,_asyncToGenerator2.default)(_regenerator.default.mark((function e(r){var n,l,i,s,u,c,p,d,f,_,h,b,y,m,g,q,v,x,k,S;return _regenerator.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(l=r.compilation,t.canDeploy){e.next=3;break}return e.abrupt("return");case 3:if(!r.hasErrors()){e.next=6;break}return log("There are compilation errors, skip uploading."),e.abrupt("return");case 6:if(t.target){e.next=9;break}return l.errors.push(logWithError("Missing upload configuration.")),e.abrupt("return");case 9:if(i=t.target,s=i.type,u=void 0===s?null!==(n=t.target)&&void 0!==n&&n.OSSUploadOptions?"oss":void 0:s,c=i.rsyncOptions,p=i.OSSUploadOptions,d=i.dest,f=i.patterns,_=void 0===f?"**":f,h=i.onUploadStart,b=i.onUploadFinish,y=i.execUploadFinishScripts,m=i.execUploadStartScripts,g=i.execOptions,q=i.maxAttempts,v=void 0===q?3:q,x=i.timeout,k=i.isUploadOutputDir,(S=k?_:(0,_multimatch.default)(Object.keys(r.compilation.assets),_)).length){e.next=14;break}return l.errors.push(logWithError("No files to upload.")),e.abrupt("return");case 14:if(null==h||h(r,_shelljs.default),execScripts(m,(0,_objectSpread2.default)((0,_objectSpread2.default)({},g),{},{cwd:o})),"rsync"!==u){e.next=21;break}return e.next=19,(0,_rsync.default)(S,d,null==c?void 0:c.args,(0,_objectSpread2.default)((0,_objectSpread2.default)({timeout:x},g),{},{cwd:a}));case 19:e.next=28;break;case 21:if("oss"!==u){e.next=26;break}return e.next=24,(0,_ossUploadTool.ossUpload)((0,_objectSpread2.default)((0,_objectSpread2.default)({cwd:a,maxAttempts:v,timeout:x},p),{},{targets:(0,_objectSpread2.default)((0,_objectSpread2.default)({dest:d},p.targets),{},{src:S})}));case 24:e.next=28;break;case 26:return l.errors.push(logWithError("Upload only supports rsync and oss.")),e.abrupt("return");case 28:return e.next=30,null==b?void 0:b(r,_shelljs.default);case 30:execScripts(y,(0,_objectSpread2.default)((0,_objectSpread2.default)({},g),{},{cwd:o})),log("Uploaded successfully.");case 32:case"end":return e.stop()}}),e)})));return function(r){return e.apply(this,arguments)}}())})),(0,_schemaUtils.validate)(schema,r),this.options=r}return(0,_createClass2.default)(e,[{key:"target",get:function(){var e=this.options||{},r=e.env,t=e.targets;if(t)return r in t?t[r]:t}}]),e}();function log(){for(var e,r=arguments.length,t=new Array(r),a=0;a<r;a++)t[a]=arguments[a];return(e=console.log).call.apply(e,[null,_const.logPrefix].concat(t))}function logWithError(e){return log(e),new _webpack.WebpackError("".concat(_const.logPrefix).concat(e))}function execScripts(e,r){if(null!=e&&e.length){var t,a=Array.isArray(e[0])?e:[e],o=(0,_createForOfIteratorHelper2.default)(a);try{for(o.s();!(t=o.n()).done;){var n=t.value,l=_shelljs.default.exec(n.join(" "),(0,_objectSpread2.default)({},r)),i=l.code,s=l.stderr;if(0!==i)throw new Error(s)}}catch(e){o.e(e)}finally{o.f()}}}var _default=module.exports=WebpackDeployPlugin;exports.default=_default;