UNPKG

synp

Version:

Convert yarn.lock to package-lock.json and vice versa

37 lines (29 loc) 1.4 kB
'use strict' const { join } = require('path') const { read } = require('../util/read') const { convertYarnToNpmV1, convertNpmV1ToYarn } = require('./lockfileV1') const { convertYarnToNpmV2, convertNpmV2ToYarn } = require('./lockfileV2') const checkWorkspace = (requiresWorkspace, withWorkspace) => { if (requiresWorkspace && !withWorkspace) { console.warn('Workspace (npm lockfile v2) support is experimental. Pass `--with-workspace` flag to enable and cross your fingers. Good luck!') return false } return requiresWorkspace } module.exports = { convertYarnToNpm (yarnLock, name, version, packageDir, withWorkspace) { const packageJson = read(join(packageDir, 'package.json')) const requiresWorkspace = !!packageJson.workspaces return checkWorkspace(requiresWorkspace, withWorkspace) ? convertYarnToNpmV2(yarnLock, name, version, packageDir, packageJson) : convertYarnToNpmV1(yarnLock, name, version, packageDir, packageJson) }, convertNpmToYarn (packageLockFileString, packageDir, withWorkspace) { const packageLock = JSON.parse(packageLockFileString) const { lockfileVersion } = packageLock const requiresWorkspace = lockfileVersion === 2 return checkWorkspace(requiresWorkspace, withWorkspace) ? convertNpmV2ToYarn(packageLockFileString, packageDir) : convertNpmV1ToYarn(packageLockFileString, packageDir) } }