UNPKG

vivo-hap-toolkit

Version:

A command line toolkit for developing Quick Apps.

3 lines (2 loc) 5.8 kB
"use strict";var _path=_interopRequireDefault(require("path")),_fsExtra=_interopRequireDefault(require("fs-extra")),_glob=_interopRequireDefault(require("glob")),_chalk=_interopRequireDefault(require("chalk")),_semver=_interopRequireDefault(require("semver")),_inquirer=_interopRequireDefault(require("inquirer")),_sharedUtils=require("@vivo-hap-toolkit/shared-utils"),_utils=require("./utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const curDir=process.cwd(),packageInfo=require("../../package.json"),dslModuleXvmDir=_path.default.dirname(require.resolve("@vivo-hap-toolkit/dsl-xvm/package.json")),dslModuleVueDir=_path.default.dirname(require.resolve("@vivo-hap-toolkit/dsl-vue/package.json")),dslModuleHash={xvm:dslModuleXvmDir,vue:dslModuleVueDir};let dslName,dslModuleDir;function checkVersion(){const e={cur:"",toolkit:"",res:0};let t;const o=_path.default.join(curDir,"package.json");return _fsExtra.default.existsSync(o)&&(t=JSON.parse(_fsExtra.default.readFileSync(o).toString()),e.cur=t.subversion&&t.subversion.toolkit||""),""===e.cur&&(e.res=1),e.toolkit=packageInfo.version,""===e.toolkit?(console.log("### App Toolkit ### 当前toolkit的文件错误, 无法升级, 请重新安装后再升级"),e.res=-1,e):(1!==e.res&&(e.res=_semver.default.gt(e.toolkit,e.cur)?1:0),e)}function mergeProps(e,t){if(e)for(const o in t)e[o]||/babel-|^webpack$|^koa/.test(o)||(e[o]=t[o])}const dependencies=["babel-cli","babel-core","babel-eslint","babel-loader","babel-plugin-syntax-jsx","cross-env","css-what","koa","koa-body","koa-router","koa-send","koa-static","socket.io","style-loader","webpack"];function cleanupDependencies(e,t){if(t.force)return e.devDependencies={},Promise.resolve(e);if(!e.devDependencies)return Promise.resolve(e);const o=dependencies.filter(t=>e.devDependencies[t]);if(!o.length)return Promise.resolve(e);let l=Promise.resolve(dependencies);return t.updateDeps||(l=new Promise(e=>{const t=[{type:"confirm",name:"toDelete",message:"检测到已包含在 hap-toolkit 中的模块依赖,现在将其移除",default:!0},{type:"checkbox",name:"selectedDeps",message:"将移除以下选中的模块",choices:o.map(e=>({checked:!0,name:e})),pageSize:o.length,when:function(e){return e.toDelete}}];_inquirer.default.prompt(t).then(t=>{e(t.toDelete?t.selectedDeps:[])})})),l.then(t=>(t.forEach(t=>{e.devDependencies[t]=void 0}),e))}function upgradePackage(e){console.log(_chalk.default.green("升级 package.json"));const t=_path.default.join(curDir,"package.json"),o=require(t),l=require(_path.default.resolve(dslModuleDir,"templates/app/demo/package.json"));return e.force&&(l.devDependencies={}),l.devDependencies[packageInfo.name]=packageInfo.version,l.subversion.toolkit=packageInfo.version,cleanupDependencies(o,e).then(e=>{for(const t in l){const a=l[t];"string"==typeof a&&o[t]?l[t]=e[t]:mergeProps(a,e[t])}_fsExtra.default.writeFileSync(t,JSON.stringify(l,null,2))})}function copyFiles(e,t){const o=_path.default.join(t,"**/{*,.*}");_glob.default.sync(o).forEach(o=>{const l=_path.default.relative(t,o),a=_path.default.join(e,l);console.log(_chalk.default.green(`file ${(0,_utils.relateCwd)(a)} copied.`)),_fsExtra.default.copySync(o,a)})}function upgradeSign(){console.log(_chalk.default.green("升级 签名文件"));const e=_path.default.join(curDir,"sign/debug");_fsExtra.default.removeSync(e),(0,_utils.mkdirsSync)(e),copyFiles(e,_path.default.join(dslModuleDir,"templates/app/demo/sign/debug"))}function upgradeEslint(){const e=_path.default.join(dslModuleDir,"templates/app/demo",".eslintrc.json"),t=_path.default.join(curDir,".eslintrc.json");_fsExtra.default.copySync(e,t)}function upgradeBabelConfig(){const e=_path.default.join(dslModuleDir,"templates/app/demo","babel.config.js"),t=_path.default.join(curDir,".babelrc"),o=_path.default.join(curDir,"babel.config.js"),l=(0,_utils.formatDate)("yyyyMMdd_hhmmss",new Date);if(console.log(_chalk.default.green("项目升级到 babel7 ,默认配置使用 babel.config.js")),_fsExtra.default.existsSync(t)){const e=_path.default.join(curDir,".babelrc.old."+l);_fsExtra.default.copySync(t,e),_fsExtra.default.removeSync(t),console.log(_chalk.default.yellow(`### App Toolkit ### .babelrc 的备份文件保存为: ${(0,_utils.relateCwd)(e)}`))}if(_fsExtra.default.existsSync(o)){const e=_path.default.join(curDir,_path.default.basename("babel.config.js",".js")+".old."+l+".js");_fsExtra.default.copySync(o,e),console.log(_chalk.default.yellow(`### App Toolkit ### 更新的 babel.config.js 的备份文件保存为: ${(0,_utils.relateCwd)(e)}`))}_fsExtra.default.existsSync(e)&&(_fsExtra.default.copySync(e,o),console.log(_chalk.default.yellow("### App Toolkit ### 更新的 babel.config.js 成功!")))}function savePackage(){const e="package.json",t=_path.default.join(curDir,e),o=(0,_utils.formatDate)("yyyyMMdd_hhmmss",new Date),l=_path.default.join(curDir,_path.default.basename(e,".json")+".old."+o+".json");_fsExtra.default.copySync(t,l),console.log(_chalk.default.yellow(`### App Toolkit ### 更新的${e}的备份文件保存为: ${(0,_utils.relateCwd)(l)}`))}function updateProject(e){const t=checkVersion();if(e.force)console.log(_chalk.default.yellow(`强制升级工程( ${t.cur} ----\x3e ${t.toolkit} )(可能会出现兼容性问题)`)),savePackage();else{if(t.res<0||0===t.res)return void(0===t.res&&console.log("### App Toolkit ### 版本已经是最新版本"));console.log(_chalk.default.green(`升级工程( ${t.cur} ----\x3e ${t.toolkit} )`))}dslName=(0,_sharedUtils.getProjectDslName)(curDir),dslModuleDir=dslModuleHash[dslName],upgradePackage(e).then(()=>{upgradeSign(),upgradeEslint(),upgradeBabelConfig(),console.log(_chalk.default.green("升级完毕, 请运行npm install更新依赖包"))})}module.exports=updateProject; //# sourceMappingURL=update.js.map