@vivo-minigame/cli
Version:
Command line interface for rapid Vivo minigame development
99 lines (89 loc) • 4.72 kB
JavaScript
;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;