const argv = process.argv.slice(2) if (argv.length === 0) { console.log('Please specify the wanted package manager: only-allow <npm|pnpm|yarn>') process.exit(1) }
// 获取到用户传入的希望使用的包管理器 // npm yarn pnpm都不是,报错 const wantedPM = argv[0] if (wantedPM !== 'npm' && wantedPM !== 'pnpm' && wantedPM !== 'yarn') { console.log(`"${wantedPM}" is not a valid package manager. Available package managers are: npm, pnpm, or yarn.`) process.exit(1) } // 使用的包管理器 const usedPM = whichPMRuns() // 如果使用的包管理和希望的不一致,根据对应的情况进行报错提示,并退出进程 if (usedPM && usedPM.name !== wantedPM) { const boxenOpts = { borderColor: 'red', borderStyle: 'double', padding: 1 } switch (wantedPM) { case'npm': console.log(boxen('Use "npm install" for installation in this project', boxenOpts)) break case'pnpm': console.log(boxen(`Use "pnpm install" for installation in this project. If you don't have pnpm, install it via "npm i -g pnpm". For more details, go to https://pnpm.js.org/`, boxenOpts)) break case'yarn': console.log(boxen(`Use "yarn" for installation in this project. If you don't have Yarn, install it via "npm i -g yarn". For more details, go to https://yarnpkg.com/`, boxenOpts)) break } process.exit(1) }