@vivo-minigame/cli
Version:
Command line interface for rapid Vivo minigame development
1 lines • 3.96 kB
JavaScript
;var _Object$defineProperty=require("@babel/runtime-corejs2/core-js/object/define-property"),_interopRequireDefault=require("@babel/runtime-corejs2/helpers/interopRequireDefault");_Object$defineProperty(exports,"__esModule",{value:!0}),exports.updatePackage=exports.uninstallPackage=exports.progress=exports.installPackage=exports.installDeps=void 0;var _promise=_interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise")),_events=_interopRequireDefault(require("events")),_registries=_interopRequireDefault(require("./registries")),_packageManager=require("./packageManager"),_cliSharedUtils=require("@vivo-minigame/cli-shared-utils"),_debug=_interopRequireDefault(require("debug"));const debug=(0,_debug.default)("minigame-cli:install"),taobaoDistURL="https://npm.taobao.org/dist",supportPackageManagerList=["npm","yarn","pnpm"],packageManagerConfig={npm:{installDeps:["install","--loglevel","error"],installPackage:["install","--loglevel","error"],uninstallPackage:["uninstall","--loglevel","error"],updatePackage:["update","--loglevel","error"]},pnpm:{installDeps:["install","--loglevel","error","--shamefully-flatten"],installPackage:["install","--loglevel","error"],uninstallPackage:["uninstall","--loglevel","error"],updatePackage:["update","--loglevel","error"]},yarn:{installDeps:[],installPackage:["add"],uninstallPackage:["remove"],updatePackage:["upgrade"]}};class InstallProgress extends _events.default{constructor(){super(),this._progress=-1}get progress(){return this._progress}set progress(value){this._progress=value,this.emit("progress",value)}get enabled(){return-1!==this._progress}set enabled(value){this.progress=value?0:-1}log(value){this.emit("log",value)}}const progress=exports.progress=new InstallProgress;function checkPackageManagerIsSupported(command){if(-1===supportPackageManagerList.indexOf(command))throw new Error(`Unknown package manager: ${command}`)}async function addRegistryToArgs(command,args){const altRegistry=await(0,_packageManager.getRegistry)({packageManager:command});altRegistry&&(args.push(`--registry=${altRegistry}`),altRegistry===_registries.default.taobao&&args.push(`--disturl=${taobaoDistURL}`))}function executeCommand(command,args,targetDir){return new _promise.default((resolve,reject)=>{progress.enabled=!1;const child=(0,_cliSharedUtils.execa)(command,args,{cwd:targetDir,stdio:["inherit","inherit","inherit"]});child.on("close",code=>0===code?void resolve():void reject(new Error(`command failed: ${command} ${args.join(" ")}`)))})}const installDeps=exports.installDeps=async function(targetDir,command){try{checkPackageManagerIsSupported(command);const args=packageManagerConfig[command].installDeps;await addRegistryToArgs(command,args),debug(`command: `,command),debug(`args: `,args),await executeCommand(command,args,targetDir)}catch(error){}},installPackage=async function(targetDir,command,packageName,dev=!0){checkPackageManagerIsSupported(command);const args=packageManagerConfig[command].installPackage;dev&&args.push("-D"),await addRegistryToArgs(command,args),args.push(packageName),debug(`command: `,command),debug(`args: `,args),await executeCommand(command,args,targetDir)};exports.installPackage=installPackage;const uninstallPackage=async function(targetDir,command,packageName){checkPackageManagerIsSupported(command);const args=packageManagerConfig[command].uninstallPackage;await addRegistryToArgs(command,args),args.push(packageName),debug(`command: `,command),debug(`args: `,args),await executeCommand(command,args,targetDir)};exports.uninstallPackage=uninstallPackage;const updatePackage=async function(targetDir,command,packageName){checkPackageManagerIsSupported(command);const args=packageManagerConfig[command].updatePackage;await addRegistryToArgs(command,args),packageName.split(" ").forEach(name=>args.push(name)),debug(`command: `,command),debug(`args: `,args),await executeCommand(command,args,targetDir)};exports.updatePackage=updatePackage;