UNPKG

lighting-plugin-hola

Version:

Hola 跨端工程插件,专为 Light 跨端架构体系服务

2 lines (1 loc) 5.74 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("shelljs"),o=require("colors"),t=require("path"),n=require("fs-extra"),r=require("webpack-merge"),s=require("os");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var o=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),o.default=e,Object.freeze(o)}var p=i(e),a=c(o),l=i(t),d=i(n);function u(e,o,t,n){return new(t||(t=Promise))((function(r,s){function c(e){try{p(n.next(e))}catch(e){s(e)}}function i(e){try{p(n.throw(e))}catch(e){s(e)}}function p(e){var o;e.done?r(e.value):(o=e.value,o instanceof t?o:new t((function(e){e(o)}))).then(c,i)}p((n=n.apply(e,o||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const f=process.env.LIGHT_HOME?process.env.LIGHT_HOME:s.homedir(),g=l.resolve(f,".lighting-plugins/data.json"),j="win32"===s.platform().toLowerCase()?"windows":"mac",y={weapp:{configName:"project.config.json",files:["app.json","app.js"],message:"请通过 light config set weapp <tool_path> 配置微信开发者工具路径,如未安装工具点击下载:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html"},alipay:{configName:"mini.project.json",files:["app.json","app.js"],message:"请通过 light config set alipay <tool_path> 配置支付宝开发者工具路径,如未安装工具点击下载:https://opendocs.alipay.com/mini/ide/download"},tt:{configName:"project.config.json",files:["app.json","app.js"],message:"请通过 light config set tt <tool_path> 配置字节跳动开发者工具路径,如未安装工具点击下载:https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/developer-instrument/download/developer-instrument-update-and-download/"},swan:{configName:"project.swan.json",files:["app.json","app.js"],message:"请通过 light config set swan <tool_path> 配置百度开发者工具路径,如未安装工具点击下载:https://smartprogram.baidu.com/docs/develop/devtools/history/"}};function h(e){let o,t;if(!y[e.type])return console.log(`暂不支持 ${e.type} 类型打开模拟器。目前支持的类型有:${Object.keys(y)}`.red);d.ensureFileSync(g);const n=JSON.parse(d.readFileSync(g).toString()||"{}");if(!n[e.type])return console.log(`${y[e.type].message}`.red);const s=l.join(process.cwd(),"config/index.js");if(d.existsSync(s)){process.env.TARO_ENV=e.type;const{outputRoot:c}=require(s)(r.merge);e.project=e.project||l.join(process.cwd(),c),l.isAbsolute(e.project)||(e.project=l.join(process.cwd(),e.project)),t=setInterval((()=>{if([].concat(y[e.type].configName,y[e.type].files).every((o=>d.existsSync(l.join(e.project,o)))))switch(clearInterval(t),clearInterval(o),e.type){case"weapp":!function(e,o){u(this,void 0,void 0,(function*(){const t=l.join(o.weapp,"windows"===j?"/cli.bat":"/Contents/MacOS/cli");(yield d.pathExists(t))?(console.log(`启动小程序开发者工具...:${e.project}`.green),p.exec(`"${t}" open --project "${e.project}"`,{async:!0})):console.log("微信开发者工具安装路径不存在".red)}))}(e,n);break;case"alipay":!function(e,o){u(this,void 0,void 0,(function*(){console.log(`启动小程序开发者工具...:${e.project}`.green);try{const t=require("minidev").default;yield t.startIde({project:e.project,appPath:o.alipay}),console.log("打开IDE成功".green)}catch(e){console.log(`打开IDE失败:${e}`.red)}}))}(e,n);break;case"tt":!function(e){u(this,void 0,void 0,(function*(){console.log(`启动小程序开发者工具...:${e.project}`.green);try{const o=require("tt-ide-cli");yield o.open({project:{path:e.project}}),console.log("打开IDE成功".green)}catch(e){console.log(`打开IDE失败:${e}`.red)}}))}(e);break;case"swan":!function(e,o){u(this,void 0,void 0,(function*(){const t=l.join(o.swan,"windows"===j?"/百度开发者工具.exe":"/Contents/MacOS/cli");if(!(yield d.pathExists(t)))return void console.log("百度开发者工具安装路径不存在".red);console.log(`启动小程序开发者工具...:${e.project}`.green);const n="windows"===j?'start "启动百度小程序开发者工具" ':"";p.exec(`${n}"${t}" --project-path "${e.project}"`,{async:!0})}))}(e,n)}}),2e3),o=setTimeout((()=>{clearInterval(t),console.log(`开发者工具自动启动超时,请选择手动启动。项目地址:${e.project}`.red)}),18e4)}}const m=require("../package.json"),w=["release"];function v(){const e=l.join(process.cwd(),"./node_modules/@tarojs/cli");return d.existsSync(e)?l.join(e,"/bin/taro"):""}function b(e){return e=e.replace(/Taro\sv\d+\.\d+\.\d+/g,`Hola v${m.version}`)}exports.getTaroCli=v,exports.injectCommand=function(e){w.forEach((o=>{"release"===o&&e.command("release").option("-t,--type <type>","编译类型").option("-w,--watch","watch功能,检测变化自动打包").option("--debug","开启小程序debug插件调试,GMUMP专属").option("--open","是否启动小程序模拟器").option("--project <project>","项目地址路径").description("工程编译,构建,打包,集成").action((function(e){if(!e.type)return void console.log(a.default.red("请输入编译类型 <type>,如:light release --type <type>"));const o=v();if(o){const t=p.exec(`node ${o} build --type ${e.type} ${e.watch?"--watch":""} ${e.watch&&e.debug&&"gmump"===e.type?"--debug":""}`,{async:!0,silent:!0});t.stdout.on("data",(e=>{process.stdout.write(b(e))})),t.stderr.on("data",(e=>{process.stderr.write(b(e))})),e.open&&h(e)}else console.log(a.default.red("当前项目中 @tarojs/cli 依赖不存在"))}))}))},exports.interceptorCmd=w,exports.version="0.1.20";