/
githubmirror
/
yarn
Обзор
Документация
Войти
/
githubmirror
/
yarn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/cli/commands/unlink.js
65 строк
2 KB
xsbchen
fixed link and unlink cmd on windows (#4772) (#5524)
05 апр 2018, 12:47
05 апр 2018, 12:47
1b1cf48
Код
Авторство
О чём код?
/* @flow */ import type {Reporter} from '../../reporters/index.js'; import type Config from '../../config.js'; import {MessageError} from '../../errors.js'; import * as fs from '../../util/fs.js'; import {getRegistryFolder} from './link.js'; import {getBinFolder as getGlobalBinFolder} from './global'; const path = require('path'); export function setFlags(commander: Object) { commander.description('Unlink a previously created symlink for a package.'); } export function hasWrapper(commander: Object, args: Array<string>): boolean { return true; } export async function run(config: Config, reporter: Reporter, flags: Object, args: Array<string>): Promise<void> { if (args.length) { for (const name of args) { const linkLoc = path.join(config.linkFolder, name); if (await fs.exists(linkLoc)) { await fs.unlink(path.join(await getRegistryFolder(config, name), name)); reporter.success(reporter.lang('linkDisusing', name)); reporter.info(reporter.lang('linkDisusingMessage', name)); } else { throw new MessageError(reporter.lang('linkMissing', name)); } } } else { // remove from registry const manifest = await config.readRootManifest(); const name = manifest.name; if (!name) { throw new MessageError(reporter.lang('unknownPackageName')); } const linkLoc = path.join(config.linkFolder, name); if (await fs.exists(linkLoc)) { // If there is a `bin` defined in the package.json, // link each bin to the global bin if (manifest.bin) { const globalBinFolder = await getGlobalBinFolder(config, flags); for (const binName in manifest.bin) { const binDestLoc = path.join(globalBinFolder, binName); if (await fs.exists(binDestLoc)) { await fs.unlink(binDestLoc); if (process.platform === 'win32') { await fs.unlink(binDestLoc + '.cmd'); } } } } await fs.unlink(linkLoc); reporter.success(reporter.lang('linkUnregistered', name)); reporter.info(reporter.lang('linkUnregisteredMessage', name)); } else { throw new MessageError(reporter.lang('linkMissing', name)); } } }