UNPKG

@vivo-minigame/cli

Version:

Command line interface for rapid Vivo minigame development

99 lines (89 loc) 4.72 kB
"use strict";var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");_Object$defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify")); var _path = _interopRequireDefault(require("path")); var _latestVersion = _interopRequireDefault(require("latest-version")); var _cliSharedUtils = require("@vivo-minigame/cli-shared-utils"); var _installDeps = require("./util/installDeps"); /** * 对老的项目进行升级 */const cwd = process.env.PATH_PROJECT || process.cwd(); // 获取项目下的package.json路径 const pkgPath = _path.default.join(cwd, 'package.json'); const pkgLockPath = _path.default.join(cwd, 'package-lock.json'); const babelConfigPathFrom = _path.default.join(__dirname, '../../', 'templates', 'default', 'babel.config.js'); const babelConfigPathTo = _path.default.join(cwd, 'babel.config.js'); const babelConfigOldPath = _path.default.join(cwd, '.babelrc'); const nodeModules = _path.default.join(cwd, 'node_modules'); async function upgrade() { const content = _cliSharedUtils.fs.readFileSync(pkgPath, { encoding: 'utf-8' }); const pkg = JSON.parse(content); // 校验当前处理的是否是小游戏工程目录 if (pkg.subversion && pkg.subversion.toolkit) { (0, _cliSharedUtils.info)('开始升级...'); // 获取cli-service的最新版本 (0, _latestVersion.default)('@vivo-minigame/cli-service').then((version) => { // 拷贝新的babel配置文件到小游戏工程 _cliSharedUtils.fs.copy(babelConfigPathFrom, babelConfigPathTo).then(() => { // 成功后,删除老的babel配置文件 _cliSharedUtils.fs.remove(babelConfigOldPath).then(() => { // 升级后删除subversion delete pkg.subversion; // 更新scripts 为mg-service pkg.scripts = (0, _assign.default)({}, pkg.scripts, { server: 'mg-service server', build: 'mg-service build', release: 'mg-service release', watch: 'mg-service watch' }); // 去掉debug delete pkg.scripts.debug; // 删除老的依赖包 const old = ['qgame-toolkit', 'babel-cli', 'babel-core', 'babel-preset-env', 'babel-plugin-transform-remove-strict-mode', 'babel-eslint', 'babel-loader', 'babel-plugin-syntax-jsx', 'css-what', 'koa', 'koa-send', 'koa-static', 'koa-body', 'koa-router', 'socket.io', 'webpack']; old.forEach((el) => { delete pkg.devDependencies[el]; }); // 更新为新的依赖包 (0, _assign.default)(pkg.devDependencies, { '@babel/core': '^7.4.5', '@babel/plugin-transform-runtime': '^7.4.4', '@babel/preset-env': '^7.4.5', 'babel-loader': '^8.0.6', 'babel-eslint': '^8.2.1', '@vivo-minigame/cli-service': `^${version}` }); pkg.dependencies = (0, _assign.default)({}, pkg.dependencies, { '@babel/runtime-corejs2': '^7.5.5' }); // 写入文件 _cliSharedUtils.fs.writeFileSync(pkgPath, (0, _stringify.default)(pkg, null, 2)); (0, _cliSharedUtils.log)(`📄 Successfully upgrade files, now removing old dependencies...`); // 删除老的依赖包 _cliSharedUtils.fs.remove(nodeModules).then(() => { _cliSharedUtils.fs.remove(pkgLockPath).then(() => { // install deps (0, _cliSharedUtils.log)(`📦 we are installing dependencies for you. this might take a while...`); (0, _cliSharedUtils.log)(`📦 if failed, you should install dependencies by yourself with ${_cliSharedUtils.chalk.green(`\`npm install\``)}`); // 重新安装依赖 (0, _installDeps.installDeps)(cwd, 'npm').then(() => { (0, _cliSharedUtils.log)(); (0, _cliSharedUtils.log)(`🎉 Successfully upgrade project ${_cliSharedUtils.chalk.yellow(pkg.name)}.`); (0, _cliSharedUtils.done)('升级完成'); }); }); }); }); }); }); } else { throw new Error(`请确定当前目录${cwd}是否为旧版的小游戏工程目录`); } } /** * 升级老的工程 */var _default = () => { return upgrade().catch((err) => { (0, _cliSharedUtils.error)('Upgrade MiniGame Failed!'); throw err; }); };exports.default = _default;