feat(core): added package manager union type (#5378)
cleanup(misc): add package manager union type
This commit is contained in:
parent
7063525851
commit
6bd6e1485f
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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'))
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user