Skip to content

Commit

Permalink
Undo cli-kit changes
Browse files Browse the repository at this point in the history
  • Loading branch information
gonzaloriestra committed May 15, 2023
1 parent aa04179 commit 89e67d3
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 155 deletions.
7 changes: 6 additions & 1 deletion packages/app/src/cli/services/generate/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ import {
addNPMDependenciesIfNeeded,
addResolutionOrOverride,
DependencyVersion,
getProdDependencies,
installNPMDependenciesRecursively,
PackageManager,
readAndParsePackageJson,
} from '@shopify/cli-kit/node/node-package-manager'
import {hyphenate} from '@shopify/cli-kit/common/string'
import {recursiveLiquidTemplateCopy} from '@shopify/cli-kit/node/liquid'
Expand Down Expand Up @@ -324,3 +324,8 @@ async function addResolutionOrOverrideIfNeeded(directory: string, extensionFlavo
await addResolutionOrOverride(directory, {'@types/react': versions.reactTypes})
}
}

async function getProdDependencies(packageJsonPath: string): Promise<DependencyVersion[]> {
const packageJsonContent = await readAndParsePackageJson(packageJsonPath)
return Object.entries(packageJsonContent?.dependencies ?? {}).map(([name, version]) => ({name, version}))
}
123 changes: 9 additions & 114 deletions packages/cli-kit/src/public/node/node-package-manager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@ import {
installNPMDependenciesRecursively,
addNPMDependencies,
DependencyVersion,
getDevDependencies,
getProdDependencies,
getPeerDependencies,
} from './node-package-manager.js'
import {exec} from './system.js'
import {inTemporaryDirectory, mkdir, touchFile, writeFile} from './fs.js'
Expand Down Expand Up @@ -226,14 +223,13 @@ describe('usesWorkspaces', () => {
})

describe('getDependencies', () => {
test('returns dev, production and peer dependencies', async () => {
test('returns dev and production dependencies', async () => {
await inTemporaryDirectory(async (tmpDir) => {
// Given
const packageJsonPath = joinPath(tmpDir, 'package.json')
const packageJson = {
dependencies: {prod: '1.2.3'},
devDependencies: {dev: '4.5.6'},
peerDependencies: {peer: '7.8.9'},
}
await writeFile(packageJsonPath, JSON.stringify(packageJson))

Expand All @@ -243,151 +239,50 @@ describe('getDependencies', () => {
// Then
expect(got.prod).toEqual('1.2.3')
expect(got.dev).toEqual('4.5.6')
expect(got.peer).toEqual('7.8.9')
})
})

test('returns production dependencies when other types do not exist', async () => {
test('returns dev dependencies when production dependencies do not exist', async () => {
await inTemporaryDirectory(async (tmpDir) => {
// Given
const packageJsonPath = joinPath(tmpDir, 'package.json')
const packageJson = {
dependencies: {prod: '1.2.3'},
devDependencies: {dev: '4.5.6'},
}
await writeFile(packageJsonPath, JSON.stringify(packageJson))

// When
const got = await getDependencies(packageJsonPath)

// Then
expect(got.prod).toEqual('1.2.3')
})
})

test('throws an error if the package.json file does not exist', async () => {
await inTemporaryDirectory(async (tmpDir) => {
// Given
const packageJsonPath = joinPath(tmpDir, 'package.json')

// When
await expect(getDependencies(packageJsonPath)).rejects.toEqual(PackageJsonNotFoundError(pathNormalize(tmpDir)))
})
})
})

describe('getProdDependencies', () => {
test('returns prod dependencies', async () => {
await inTemporaryDirectory(async (tmpDir) => {
// Given
const packageJsonPath = joinPath(tmpDir, 'package.json')
const packageJson = {
dependencies: {prod: '1.2.3'},
devDependencies: {dev1: '4.5.6', dev2: '7.8.9'},
}
await writeFile(packageJsonPath, JSON.stringify(packageJson))

// When
const got = await getProdDependencies(packageJsonPath)

// Then
expect(got).toEqual([{name: 'prod', version: '1.2.3'}])
})
})

test('returns an empty array when there are no dependencies', async () => {
await inTemporaryDirectory(async (tmpDir) => {
// Given
const packageJsonPath = joinPath(tmpDir, 'package.json')
const packageJson = {
devDependencies: {dev1: '4.5.6', dev2: '7.8.9'},
}
await writeFile(packageJsonPath, JSON.stringify(packageJson))

// When
const got = await getProdDependencies(packageJsonPath)

// Then
expect(got).toEqual([])
})
})
})

describe('getDevDependencies', () => {
test('returns dev dependencies', async () => {
await inTemporaryDirectory(async (tmpDir) => {
// Given
const packageJsonPath = joinPath(tmpDir, 'package.json')
const packageJson = {
dependencies: {prod: '1.2.3'},
devDependencies: {dev1: '4.5.6', dev2: '7.8.9'},
}
await writeFile(packageJsonPath, JSON.stringify(packageJson))

// When
const got = await getDevDependencies(packageJsonPath)

// Then
expect(got).toEqual([
{name: 'dev1', version: '4.5.6'},
{name: 'dev2', version: '7.8.9'},
])
})
})

test('returns an empty array when there are no dependencies', async () => {
await inTemporaryDirectory(async (tmpDir) => {
// Given
const packageJsonPath = joinPath(tmpDir, 'package.json')
const packageJson = {
dependencies: {prod: '1.2.3'},
}
await writeFile(packageJsonPath, JSON.stringify(packageJson))

// When
const got = await getDevDependencies(packageJsonPath)

// Then
expect(got).toEqual([])
expect(got.dev).toEqual('4.5.6')
})
})
})

describe('getPeerDependencies', () => {
test('returns dev dependencies', async () => {
test('returns production dependencies when dev dependencies do not exist', async () => {
await inTemporaryDirectory(async (tmpDir) => {
// Given
const packageJsonPath = joinPath(tmpDir, 'package.json')
const packageJson = {
dependencies: {prod: '1.2.3'},
peerDependencies: {peer1: '4.5.6', peer2: '7.8.9'},
}
await writeFile(packageJsonPath, JSON.stringify(packageJson))

// When
const got = await getPeerDependencies(packageJsonPath)
const got = await getDependencies(packageJsonPath)

// Then
expect(got).toEqual([
{name: 'peer1', version: '4.5.6'},
{name: 'peer2', version: '7.8.9'},
])
expect(got.prod).toEqual('1.2.3')
})
})

test('returns an empty array when there are no dependencies', async () => {
test('throws an error if the package.json file does not exist', async () => {
await inTemporaryDirectory(async (tmpDir) => {
// Given
const packageJsonPath = joinPath(tmpDir, 'package.json')
const packageJson = {
dependencies: {prod: '1.2.3'},
}
await writeFile(packageJsonPath, JSON.stringify(packageJson))

// When
const got = await getPeerDependencies(packageJsonPath)

// Then
expect(got).toEqual([])
await expect(getDependencies(packageJsonPath)).rejects.toEqual(PackageJsonNotFoundError(pathNormalize(tmpDir)))
})
})
})
Expand Down
45 changes: 5 additions & 40 deletions packages/cli-kit/src/public/node/node-package-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -187,47 +187,16 @@ export async function getPackageName(packageJsonPath: string): Promise<string |
}

/**
* Returns the list of production, dev and peer dependencies of a package.json
* Returns the list of production and dev dependencies of a package.json
* @param packageJsonPath - Path to the package.json file
* @returns A promise that resolves with the list of dependencies.
*/
export async function getDependencies(packageJsonPath: string): Promise<{[key: string]: string}> {
const packageJsonContent = await readAndParsePackageJson(packageJsonPath)
const dependencies: {[key: string]: string} = packageJsonContent.dependencies ?? {}
const devDependencies: {[key: string]: string} = packageJsonContent.devDependencies ?? {}
const peerDependencies: {[key: string]: string} = packageJsonContent.peerDependencies ?? {}

return {...dependencies, ...devDependencies, ...peerDependencies}
}

/**
* Returns the list of production dependencies of a package.json
* @param packageJsonPath - Path to the package.json file
* @returns A promise that resolves with the list of dependencies.
*/
export async function getProdDependencies(packageJsonPath: string): Promise<DependencyVersion[]> {
const packageJsonContent = await readAndParsePackageJson(packageJsonPath)
return Object.entries(packageJsonContent.dependencies ?? {}).map(([name, version]) => ({name, version}))
}

/**
* Returns the list of dev dependencies of a package.json
* @param packageJsonPath - Path to the package.json file
* @returns A promise that resolves with the list of dependencies.
*/
export async function getDevDependencies(packageJsonPath: string): Promise<DependencyVersion[]> {
const packageJsonContent = await readAndParsePackageJson(packageJsonPath)
return Object.entries(packageJsonContent.devDependencies ?? {}).map(([name, version]) => ({name, version}))
}

/**
* Returns the list of peer dependencies of a package.json
* @param packageJsonPath - Path to the package.json file
* @returns A promise that resolves with the list of dependencies.
*/
export async function getPeerDependencies(packageJsonPath: string): Promise<DependencyVersion[]> {
const packageJsonContent = await readAndParsePackageJson(packageJsonPath)
return Object.entries(packageJsonContent.peerDependencies ?? {}).map(([name, version]) => ({name, version}))
return {...dependencies, ...devDependencies}
}

/**
Expand Down Expand Up @@ -298,11 +267,6 @@ export interface PackageJson {
*/
devDependencies?: {[key: string]: string}

/**
* The peerDependencies attribute of the package.json
*/
peerDependencies?: {[key: string]: string}

/**
* The optional oclif settings attribute of the package.json
*/
Expand Down Expand Up @@ -421,7 +385,8 @@ ${outputToken.json(options)}
throw PackageJsonNotFoundError(options.directory)
}
const existingDependencies = Object.keys(await getDependencies(packageJsonPath))
const dependenciesToAdd = dependencies.filter((dep) => {
let dependenciesToAdd = dependencies
dependenciesToAdd = dependencies.filter((dep) => {
return !existingDependencies.includes(dep.name)
})
if (dependenciesToAdd.length === 0) {
Expand All @@ -434,6 +399,7 @@ export async function addNPMDependencies(
dependencies: DependencyVersion[],
options: AddNPMDependenciesIfNeededOptions,
): Promise<void> {
let args: string[]
const dependenciesWithVersion = dependencies.map((dep) => {
return dep.version ? `${dep.name}@${dep.version}` : dep.name
})
Expand Down Expand Up @@ -548,7 +514,6 @@ function argumentsToAddDependenciesWithPNPM(dependencies: string[], type: Depend
command.push('--save-prod')
break
}

return command
}

Expand Down

0 comments on commit 89e67d3

Please sign in to comment.