feat(core): added package manager union type (#5378)

cleanup(misc): add package manager union type
This commit is contained in:
Phillip Barta 2021-04-19 21:24:02 +02:00 committed by GitHub
parent 7063525851
commit 6bd6e1485f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 33 additions and 18 deletions

View File

@ -1,7 +1,10 @@
#!/usr/bin/env node
// we can't import from '@nrwl/workspace' because it will require typescript
import { getPackageManagerCommand } from '@nrwl/tao/src/shared/package-manager';
import {
getPackageManagerCommand,
PackageManager,
} from '@nrwl/tao/src/shared/package-manager';
import { output } from '@nrwl/workspace/src/utilities/output';
import { execSync } from 'child_process';
import { readFileSync, removeSync, writeFileSync } from 'fs-extra';
@ -52,7 +55,7 @@ function createSandbox(packageManager: string) {
function createWorkspace(
tmpDir: string,
packageManager: string,
packageManager: PackageManager,
parsedArgs: any,
name: string
) {
@ -197,7 +200,7 @@ if (parsedArgs.help) {
process.exit(0);
}
const packageManager = parsedArgs.packageManager || 'npm';
const packageManager: PackageManager = parsedArgs.packageManager || 'npm';
determineWorkspaceName(parsedArgs).then((workspaceName) => {
return determinePluginName(parsedArgs).then((pluginName) => {
const tmpDir = createSandbox(packageManager);

View File

@ -13,6 +13,7 @@ import * as ora from 'ora';
import {
getPackageManagerCommand,
getPackageManagerVersion,
PackageManager,
} from './package-manager';
export enum Preset {
@ -120,7 +121,7 @@ if (parsedArgs.help) {
}
(async function main() {
const packageManager = parsedArgs.packageManager || 'npm';
const packageManager: PackageManager = parsedArgs.packageManager || 'npm';
const {
name,
cli,
@ -500,7 +501,7 @@ function createSandbox(packageManager: string) {
async function createApp(
tmpDir: string,
name: string,
packageManager: string,
packageManager: PackageManager,
parsedArgs: any
) {
const { _, cli, ...restArgs } = parsedArgs;

View File

@ -7,7 +7,9 @@ import { join } from 'path';
* we duplicate the helper functions from @nrwl/workspace in this file.
*/
export function detectPackageManager(dir = '') {
export type PackageManager = 'yarn' | 'pnpm' | 'npm';
export function detectPackageManager(dir: string = ''): PackageManager {
return existsSync(join(dir, 'yarn.lock'))
? 'yarn'
: existsSync(join(dir, 'pnpm-lock.yaml'))
@ -28,7 +30,7 @@ export function detectPackageManager(dir = '') {
*
*/
export function getPackageManagerCommand(
packageManager = detectPackageManager()
packageManager: PackageManager = detectPackageManager()
): {
install: string;
add: string;
@ -75,7 +77,7 @@ export function getPackageManagerCommand(
}
export function getPackageManagerVersion(
packageManager: 'npm' | 'yarn' | 'pnpm'
packageManager: PackageManager
): string {
return execSync(`${packageManager} --version`).toString('utf-8').trim();
}

View File

@ -18,7 +18,10 @@ export {
NxAffectedConfig,
} from '@nrwl/tao/src/shared/nx';
export { logger } from '@nrwl/tao/src/shared/logger';
export { getPackageManagerCommand } from '@nrwl/tao/src/shared/package-manager';
export {
getPackageManagerCommand,
PackageManager,
} from '@nrwl/tao/src/shared/package-manager';
export { runExecutor, Target } from '@nrwl/tao/src/commands/run';
export { formatFiles } from './src/generators/format-files';

View File

@ -4,6 +4,7 @@ import { join } from 'path';
import {
detectPackageManager,
getPackageManagerCommand,
PackageManager,
} from '@nrwl/tao/src/shared/package-manager';
import { joinPathFragments } from '../utils/path';
@ -21,7 +22,7 @@ export function installPackagesTask(
host: Tree,
alwaysRun: boolean = false,
cwd: string = '',
packageManager?: string
packageManager?: PackageManager
) {
const packageJsonValue = host
.read(joinPathFragments(cwd, 'package.json'))

View File

@ -11,6 +11,7 @@ import { convertToCamelCase, handleErrors } from '../shared/params';
import {
detectPackageManager,
getPackageManagerCommand,
PackageManager,
} from '../shared/package-manager';
import { FsTree } from '../shared/tree';
import { flushChanges } from './generate';
@ -421,7 +422,7 @@ function versions(root: string, from: { [p: string]: string }) {
}
// testing-fetch-start
function createFetcher(packageManager: string) {
function createFetcher(packageManager: PackageManager) {
const cache = {};
return async function f(
packageName: string,

View File

@ -2,7 +2,9 @@ import { execSync } from 'child_process';
import { existsSync } from 'fs';
import { join } from 'path';
export function detectPackageManager(dir = '') {
export type PackageManager = 'yarn' | 'pnpm' | 'npm';
export function detectPackageManager(dir: string = ''): PackageManager {
return existsSync(join(dir, 'yarn.lock'))
? 'yarn'
: existsSync(join(dir, 'pnpm-lock.yaml'))
@ -23,7 +25,7 @@ export function detectPackageManager(dir = '') {
*
*/
export function getPackageManagerCommand(
packageManager = detectPackageManager()
packageManager: PackageManager = detectPackageManager()
): {
install: string;
add: string;
@ -70,7 +72,7 @@ export function getPackageManagerCommand(
}
export function getPackageManagerVersion(
packageManager: 'npm' | 'yarn' | 'pnpm'
packageManager: PackageManager
): string {
return execSync(`${packageManager} --version`).toString('utf-8').trim();
}

View File

@ -2,6 +2,7 @@ import * as fs from 'fs';
import * as path from 'path';
import * as stripJsonComments from 'strip-json-comments';
import { NxJsonConfiguration, NxJsonProjectConfiguration } from './nx';
import { PackageManager } from './package-manager';
export interface Workspace
extends WorkspaceJsonConfiguration,
@ -51,7 +52,7 @@ export interface WorkspaceJsonConfiguration {
* Default generator collection. It is used when no collection is provided.
*/
cli?: {
packageManager?: 'npm' | 'yarn' | 'pnpm';
packageManager?: PackageManager;
defaultCollection?: string;
};
}

View File

@ -1,5 +1,5 @@
import { createTree } from '@nrwl/devkit/testing';
import { readJson, Tree, writeJson } from '@nrwl/devkit';
import { readJson, Tree, writeJson, PackageManager } from '@nrwl/devkit';
import { newGenerator, Preset, Schema } from './new';
import { Linter } from '../../utils/lint';
@ -64,7 +64,7 @@ describe('new', () => {
describe('--packageManager', () => {
describe.each([['npm'], ['yarn'], ['pnpm']])(
'%s',
(packageManager: 'npm' | 'yarn' | 'pnpm') => {
(packageManager: PackageManager) => {
it('should set the packageManager in workspace.json', async () => {
await newGenerator(tree, {
...defaultOptions,

View File

@ -9,6 +9,7 @@ import {
names,
getPackageManagerCommand,
WorkspaceJsonConfiguration,
PackageManager,
} from '@nrwl/devkit';
import { join } from 'path';
@ -46,7 +47,7 @@ export interface Schema {
commit?: { name: string; email: string; message?: string };
defaultBase: string;
linter: 'tslint' | 'eslint';
packageManager?: 'npm' | 'yarn' | 'pnpm';
packageManager?: PackageManager;
}
function generatePreset(host: Tree, opts: Schema) {