fix: don't normalize package.json

This commit is contained in:
Zoltan Kochan
2019-04-21 02:34:24 +03:00
parent 1b82689c7c
commit 4f567abbff
9 changed files with 49 additions and 28 deletions

View File

@@ -1,10 +1,10 @@
import { WANTED_LOCKFILE } from '@pnpm/constants'
import { fromDir as readPackageJsonFromDir } from '@pnpm/read-package-json'
import loadJsonFile from 'load-json-file'
import path = require('path')
import rimraf = require('rimraf-then')
import { install } from 'supi'
import createStoreController from '../createStoreController'
import { readImporterManifestFromDir } from '../readImporterManifest'
import { PnpmOptions } from '../types'
export default async function installCmd (
@@ -26,7 +26,7 @@ export default async function installCmd (
store: store.path,
storeController: store.ctrl,
}
await install(await readPackageJsonFromDir(opts.prefix), installOpts)
await install(await readImporterManifestFromDir(opts.prefix), installOpts)
}
async function readNpmLockfile (prefix: string) {

View File

@@ -1,8 +1,4 @@
import { fromDir as readPackageJsonFromDir } from '@pnpm/read-package-json'
import {
getSaveType,
safeReadPackageFromDir,
} from '@pnpm/utils'
import { getSaveType } from '@pnpm/utils'
import {
install,
mutateModules,
@@ -12,6 +8,7 @@ import writePkg = require('write-pkg')
import createStoreController from '../createStoreController'
import findWorkspacePackages, { arrayOfLocalPackagesToMap } from '../findWorkspacePackages'
import getPinnedVersion from '../getPinnedVersion'
import { readImporterManifestFromDir, safeReadImporterManifestFromDir } from '../readImporterManifest'
import requireHooks from '../requireHooks'
import { PnpmOptions } from '../types'
import updateToLatestSpecsFromManifest, { createLatestSpecs } from '../updateToLatestSpecsFromManifest'
@@ -57,7 +54,7 @@ export default async function installCmd (
storeController: store.ctrl,
}
let manifest = await safeReadPackageFromDir(opts.prefix)
let manifest = await safeReadImporterManifestFromDir(opts.prefix)
if (manifest === null) {
if (opts.update) {
const err = new Error('No package.json found')
@@ -115,7 +112,7 @@ export default async function installCmd (
[
{
buildIndex: 0,
manifest: await readPackageJsonFromDir(opts.prefix),
manifest: await readImporterManifestFromDir(opts.prefix),
prefix: opts.prefix,
},
], {

View File

@@ -1,5 +1,4 @@
import { StoreController } from '@pnpm/package-store'
import { fromDir as readPackageJsonFromDir } from '@pnpm/read-package-json'
import { safeReadPackageFromDir } from '@pnpm/utils'
import pLimit = require('p-limit')
import path = require('path')
@@ -15,6 +14,7 @@ import {
import { cached as createStoreController } from '../createStoreController'
import findWorkspacePackages, { arrayOfLocalPackagesToMap } from '../findWorkspacePackages'
import getConfigs from '../getConfigs'
import { readImporterManifestFromDir } from '../readImporterManifest'
import { PnpmOptions } from '../types'
const installLimit = pLimit(4)
@@ -77,7 +77,7 @@ export default async (
pkgPaths.map((prefix) => installLimit(async () => {
const s = await createStoreController(storeControllerCache, opts)
await install(
await readPackageJsonFromDir(prefix), {
await readImporterManifestFromDir(prefix), {
...await getConfigs(
{ ...opts.cliArgs, prefix },
{
@@ -94,7 +94,7 @@ export default async (
)
await link(pkgPaths, path.join(cwd, 'node_modules'), {
...linkOpts,
manifest: await readPackageJsonFromDir(cwd),
manifest: await readImporterManifestFromDir(cwd),
})
await Promise.all(

View File

@@ -1,6 +1,6 @@
import { fromDir as readPackageJsonFromDir } from '@pnpm/read-package-json'
import { InstallOptions, mutateModules } from 'supi'
import createStoreController from '../createStoreController'
import { readImporterManifestFromDir } from '../readImporterManifest'
import { PnpmOptions } from '../types'
export default async (input: string[], opts: PnpmOptions) => {
@@ -8,7 +8,7 @@ export default async (input: string[], opts: PnpmOptions) => {
return mutateModules([
{
buildIndex: 0,
manifest: await readPackageJsonFromDir(process.cwd()),
manifest: await readImporterManifestFromDir(process.cwd()),
mutation: 'install',
prefix: process.cwd(),
pruneDirectDependencies: true,

View File

@@ -1,9 +1,9 @@
import { fromDir as readPackageJsonFromDir } from '@pnpm/read-package-json'
import {
rebuild,
rebuildPkgs,
} from 'supi'
import createStoreController from '../createStoreController'
import { readImporterManifestFromDir } from '../readImporterManifest'
import { PnpmOptions } from '../types'
export default async function (
@@ -22,7 +22,7 @@ export default async function (
[
{
buildIndex: 0,
manifest: await readPackageJsonFromDir(rebuildOpts.prefix),
manifest: await readImporterManifestFromDir(rebuildOpts.prefix),
prefix: rebuildOpts.prefix,
},
],
@@ -32,7 +32,7 @@ export default async function (
await rebuildPkgs(
[
{
manifest: await readPackageJsonFromDir(rebuildOpts.prefix),
manifest: await readImporterManifestFromDir(rebuildOpts.prefix),
prefix: rebuildOpts.prefix,
},
],

View File

@@ -1,5 +1,4 @@
import logger from '@pnpm/logger'
import { fromDir as readPackageJsonFromDir } from '@pnpm/read-package-json'
import { DependencyManifest, ImporterManifest } from '@pnpm/types'
import { getSaveType } from '@pnpm/utils'
import camelcaseKeys = require('camelcase-keys')
@@ -30,6 +29,7 @@ import getCommandFullName from '../../getCommandFullName'
import getPinnedVersion from '../../getPinnedVersion'
import { scopeLogger } from '../../loggers'
import parsePackageSelector, { PackageSelector } from '../../parsePackageSelectors'
import { readImporterManifestFromDir } from '../../readImporterManifest'
import requireHooks from '../../requireHooks'
import { PnpmOptions } from '../../types'
import updateToLatestSpecsFromManifest, { createLatestSpecs } from '../../updateToLatestSpecsFromManifest'
@@ -207,7 +207,7 @@ export async function recursive (
prefixes.map(async (prefix) => {
importers.push({
buildIndex,
manifest: await readPackageJsonFromDir(prefix),
manifest: await readImporterManifestFromDir(prefix),
prefix,
})
})
@@ -232,7 +232,7 @@ export async function recursive (
const mutation = cmdFullName === 'uninstall' ? 'uninstallSome' : (input.length === 0 && !updateToLatest ? 'install' : 'installSome')
const mutatedImporters = await Promise.all<MutatedImporter>(importers.map(async ({ buildIndex, prefix }) => {
const localConfigs = await memReadLocalConfigs(prefix)
const manifest = await readPackageJsonFromDir(prefix)
const manifest = await readImporterManifestFromDir(prefix)
const shamefullyFlatten = typeof localConfigs.shamefullyFlatten === 'boolean'
? localConfigs.shamefullyFlatten
: opts.shamefullyFlatten
@@ -302,7 +302,7 @@ export async function recursive (
return
}
const manifest = await readPackageJsonFromDir(prefix)
const manifest = await readImporterManifestFromDir(prefix)
let currentInput = [...input]
if (updateToLatest) {
if (!currentInput || !currentInput.length) {
@@ -398,7 +398,7 @@ export async function recursive (
[
{
buildIndex: 0,
manifest: await readPackageJsonFromDir(prefix),
manifest: await readImporterManifestFromDir(prefix),
prefix,
},
],

View File

@@ -1,4 +1,3 @@
import { fromDir as readPackageJsonFromDir } from '@pnpm/read-package-json'
import {
mutateModules,
uninstall,
@@ -6,6 +5,7 @@ import {
import writePkg = require('write-pkg')
import createStoreController from '../createStoreController'
import findWorkspacePackages, { arrayOfLocalPackagesToMap } from '../findWorkspacePackages'
import { readImporterManifestFromDir } from '../readImporterManifest'
import { PnpmOptions } from '../types'
export default async function uninstallCmd (
@@ -18,7 +18,7 @@ export default async function uninstallCmd (
storeController: store.ctrl,
})
if (opts.lockfileDirectory === opts.prefix) {
const manifest = await uninstall(await readPackageJsonFromDir(opts.prefix), input, uninstallOpts)
const manifest = await uninstall(await readImporterManifestFromDir(opts.prefix), input, uninstallOpts)
await writePkg(opts.prefix, manifest)
return
}
@@ -30,7 +30,7 @@ export default async function uninstallCmd (
{
bin: opts.bin,
dependencyNames: input,
manifest: await readPackageJsonFromDir(opts.prefix),
manifest: await readImporterManifestFromDir(opts.prefix),
mutation: 'uninstallSome',
prefix: opts.prefix,
},

View File

@@ -1,6 +1,6 @@
import { fromDir as readPackageJsonFromDir } from '@pnpm/read-package-json'
import { mutateModules } from 'supi'
import createStoreController from '../createStoreController'
import { readImporterManifestFromDir } from '../readImporterManifest'
import { PnpmOptions } from '../types'
export default async function (input: string[], opts: PnpmOptions) {
@@ -14,7 +14,7 @@ export default async function (input: string[], opts: PnpmOptions) {
return mutateModules([
{
dependencyNames: input,
manifest: await readPackageJsonFromDir(opts.prefix),
manifest: await readImporterManifestFromDir(opts.prefix),
mutation: 'unlinkSome',
prefix: opts.prefix,
},
@@ -22,7 +22,7 @@ export default async function (input: string[], opts: PnpmOptions) {
}
return mutateModules([
{
manifest: await readPackageJsonFromDir(opts.prefix),
manifest: await readImporterManifestFromDir(opts.prefix),
mutation: 'unlink',
prefix: opts.prefix,
},

View File

@@ -0,0 +1,24 @@
import { ImporterManifest } from '@pnpm/types'
import loadJsonFile from 'load-json-file'
import path = require('path')
export async function readImporterManifest (filename: string) {
return loadJsonFile<ImporterManifest>(filename)
}
export async function readImporterManifestFromDir (dir: string) {
return readImporterManifest(path.join(dir, 'package.json'))
}
export async function safeReadImporterManifest (filename: string): Promise<ImporterManifest | null> {
try {
return await readImporterManifest(filename)
} catch (err) {
if (err['code'] !== 'ENOENT') throw err
return null
}
}
export function safeReadImporterManifestFromDir (dir: string) {
return safeReadImporterManifest(path.join(dir, 'package.json'))
}