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
|
#!/usr/bin/env node
|
||||||
|
|
||||||
// we can't import from '@nrwl/workspace' because it will require typescript
|
// 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 { output } from '@nrwl/workspace/src/utilities/output';
|
||||||
import { execSync } from 'child_process';
|
import { execSync } from 'child_process';
|
||||||
import { readFileSync, removeSync, writeFileSync } from 'fs-extra';
|
import { readFileSync, removeSync, writeFileSync } from 'fs-extra';
|
||||||
@ -52,7 +55,7 @@ function createSandbox(packageManager: string) {
|
|||||||
|
|
||||||
function createWorkspace(
|
function createWorkspace(
|
||||||
tmpDir: string,
|
tmpDir: string,
|
||||||
packageManager: string,
|
packageManager: PackageManager,
|
||||||
parsedArgs: any,
|
parsedArgs: any,
|
||||||
name: string
|
name: string
|
||||||
) {
|
) {
|
||||||
@ -197,7 +200,7 @@ if (parsedArgs.help) {
|
|||||||
process.exit(0);
|
process.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
const packageManager = parsedArgs.packageManager || 'npm';
|
const packageManager: PackageManager = parsedArgs.packageManager || 'npm';
|
||||||
determineWorkspaceName(parsedArgs).then((workspaceName) => {
|
determineWorkspaceName(parsedArgs).then((workspaceName) => {
|
||||||
return determinePluginName(parsedArgs).then((pluginName) => {
|
return determinePluginName(parsedArgs).then((pluginName) => {
|
||||||
const tmpDir = createSandbox(packageManager);
|
const tmpDir = createSandbox(packageManager);
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import * as ora from 'ora';
|
|||||||
import {
|
import {
|
||||||
getPackageManagerCommand,
|
getPackageManagerCommand,
|
||||||
getPackageManagerVersion,
|
getPackageManagerVersion,
|
||||||
|
PackageManager,
|
||||||
} from './package-manager';
|
} from './package-manager';
|
||||||
|
|
||||||
export enum Preset {
|
export enum Preset {
|
||||||
@ -120,7 +121,7 @@ if (parsedArgs.help) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
(async function main() {
|
(async function main() {
|
||||||
const packageManager = parsedArgs.packageManager || 'npm';
|
const packageManager: PackageManager = parsedArgs.packageManager || 'npm';
|
||||||
const {
|
const {
|
||||||
name,
|
name,
|
||||||
cli,
|
cli,
|
||||||
@ -500,7 +501,7 @@ function createSandbox(packageManager: string) {
|
|||||||
async function createApp(
|
async function createApp(
|
||||||
tmpDir: string,
|
tmpDir: string,
|
||||||
name: string,
|
name: string,
|
||||||
packageManager: string,
|
packageManager: PackageManager,
|
||||||
parsedArgs: any
|
parsedArgs: any
|
||||||
) {
|
) {
|
||||||
const { _, cli, ...restArgs } = parsedArgs;
|
const { _, cli, ...restArgs } = parsedArgs;
|
||||||
|
|||||||
@ -7,7 +7,9 @@ import { join } from 'path';
|
|||||||
* we duplicate the helper functions from @nrwl/workspace in this file.
|
* 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'))
|
return existsSync(join(dir, 'yarn.lock'))
|
||||||
? 'yarn'
|
? 'yarn'
|
||||||
: existsSync(join(dir, 'pnpm-lock.yaml'))
|
: existsSync(join(dir, 'pnpm-lock.yaml'))
|
||||||
@ -28,7 +30,7 @@ export function detectPackageManager(dir = '') {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export function getPackageManagerCommand(
|
export function getPackageManagerCommand(
|
||||||
packageManager = detectPackageManager()
|
packageManager: PackageManager = detectPackageManager()
|
||||||
): {
|
): {
|
||||||
install: string;
|
install: string;
|
||||||
add: string;
|
add: string;
|
||||||
@ -75,7 +77,7 @@ export function getPackageManagerCommand(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function getPackageManagerVersion(
|
export function getPackageManagerVersion(
|
||||||
packageManager: 'npm' | 'yarn' | 'pnpm'
|
packageManager: PackageManager
|
||||||
): string {
|
): string {
|
||||||
return execSync(`${packageManager} --version`).toString('utf-8').trim();
|
return execSync(`${packageManager} --version`).toString('utf-8').trim();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,7 +18,10 @@ export {
|
|||||||
NxAffectedConfig,
|
NxAffectedConfig,
|
||||||
} from '@nrwl/tao/src/shared/nx';
|
} from '@nrwl/tao/src/shared/nx';
|
||||||
export { logger } from '@nrwl/tao/src/shared/logger';
|
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 { runExecutor, Target } from '@nrwl/tao/src/commands/run';
|
||||||
|
|
||||||
export { formatFiles } from './src/generators/format-files';
|
export { formatFiles } from './src/generators/format-files';
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import { join } from 'path';
|
|||||||
import {
|
import {
|
||||||
detectPackageManager,
|
detectPackageManager,
|
||||||
getPackageManagerCommand,
|
getPackageManagerCommand,
|
||||||
|
PackageManager,
|
||||||
} from '@nrwl/tao/src/shared/package-manager';
|
} from '@nrwl/tao/src/shared/package-manager';
|
||||||
|
|
||||||
import { joinPathFragments } from '../utils/path';
|
import { joinPathFragments } from '../utils/path';
|
||||||
@ -21,7 +22,7 @@ export function installPackagesTask(
|
|||||||
host: Tree,
|
host: Tree,
|
||||||
alwaysRun: boolean = false,
|
alwaysRun: boolean = false,
|
||||||
cwd: string = '',
|
cwd: string = '',
|
||||||
packageManager?: string
|
packageManager?: PackageManager
|
||||||
) {
|
) {
|
||||||
const packageJsonValue = host
|
const packageJsonValue = host
|
||||||
.read(joinPathFragments(cwd, 'package.json'))
|
.read(joinPathFragments(cwd, 'package.json'))
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import { convertToCamelCase, handleErrors } from '../shared/params';
|
|||||||
import {
|
import {
|
||||||
detectPackageManager,
|
detectPackageManager,
|
||||||
getPackageManagerCommand,
|
getPackageManagerCommand,
|
||||||
|
PackageManager,
|
||||||
} from '../shared/package-manager';
|
} from '../shared/package-manager';
|
||||||
import { FsTree } from '../shared/tree';
|
import { FsTree } from '../shared/tree';
|
||||||
import { flushChanges } from './generate';
|
import { flushChanges } from './generate';
|
||||||
@ -421,7 +422,7 @@ function versions(root: string, from: { [p: string]: string }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// testing-fetch-start
|
// testing-fetch-start
|
||||||
function createFetcher(packageManager: string) {
|
function createFetcher(packageManager: PackageManager) {
|
||||||
const cache = {};
|
const cache = {};
|
||||||
return async function f(
|
return async function f(
|
||||||
packageName: string,
|
packageName: string,
|
||||||
|
|||||||
@ -2,7 +2,9 @@ import { execSync } from 'child_process';
|
|||||||
import { existsSync } from 'fs';
|
import { existsSync } from 'fs';
|
||||||
import { join } from 'path';
|
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'))
|
return existsSync(join(dir, 'yarn.lock'))
|
||||||
? 'yarn'
|
? 'yarn'
|
||||||
: existsSync(join(dir, 'pnpm-lock.yaml'))
|
: existsSync(join(dir, 'pnpm-lock.yaml'))
|
||||||
@ -23,7 +25,7 @@ export function detectPackageManager(dir = '') {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export function getPackageManagerCommand(
|
export function getPackageManagerCommand(
|
||||||
packageManager = detectPackageManager()
|
packageManager: PackageManager = detectPackageManager()
|
||||||
): {
|
): {
|
||||||
install: string;
|
install: string;
|
||||||
add: string;
|
add: string;
|
||||||
@ -70,7 +72,7 @@ export function getPackageManagerCommand(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function getPackageManagerVersion(
|
export function getPackageManagerVersion(
|
||||||
packageManager: 'npm' | 'yarn' | 'pnpm'
|
packageManager: PackageManager
|
||||||
): string {
|
): string {
|
||||||
return execSync(`${packageManager} --version`).toString('utf-8').trim();
|
return execSync(`${packageManager} --version`).toString('utf-8').trim();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import * as fs from 'fs';
|
|||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as stripJsonComments from 'strip-json-comments';
|
import * as stripJsonComments from 'strip-json-comments';
|
||||||
import { NxJsonConfiguration, NxJsonProjectConfiguration } from './nx';
|
import { NxJsonConfiguration, NxJsonProjectConfiguration } from './nx';
|
||||||
|
import { PackageManager } from './package-manager';
|
||||||
|
|
||||||
export interface Workspace
|
export interface Workspace
|
||||||
extends WorkspaceJsonConfiguration,
|
extends WorkspaceJsonConfiguration,
|
||||||
@ -51,7 +52,7 @@ export interface WorkspaceJsonConfiguration {
|
|||||||
* Default generator collection. It is used when no collection is provided.
|
* Default generator collection. It is used when no collection is provided.
|
||||||
*/
|
*/
|
||||||
cli?: {
|
cli?: {
|
||||||
packageManager?: 'npm' | 'yarn' | 'pnpm';
|
packageManager?: PackageManager;
|
||||||
defaultCollection?: string;
|
defaultCollection?: string;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { createTree } from '@nrwl/devkit/testing';
|
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 { newGenerator, Preset, Schema } from './new';
|
||||||
import { Linter } from '../../utils/lint';
|
import { Linter } from '../../utils/lint';
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ describe('new', () => {
|
|||||||
describe('--packageManager', () => {
|
describe('--packageManager', () => {
|
||||||
describe.each([['npm'], ['yarn'], ['pnpm']])(
|
describe.each([['npm'], ['yarn'], ['pnpm']])(
|
||||||
'%s',
|
'%s',
|
||||||
(packageManager: 'npm' | 'yarn' | 'pnpm') => {
|
(packageManager: PackageManager) => {
|
||||||
it('should set the packageManager in workspace.json', async () => {
|
it('should set the packageManager in workspace.json', async () => {
|
||||||
await newGenerator(tree, {
|
await newGenerator(tree, {
|
||||||
...defaultOptions,
|
...defaultOptions,
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import {
|
|||||||
names,
|
names,
|
||||||
getPackageManagerCommand,
|
getPackageManagerCommand,
|
||||||
WorkspaceJsonConfiguration,
|
WorkspaceJsonConfiguration,
|
||||||
|
PackageManager,
|
||||||
} from '@nrwl/devkit';
|
} from '@nrwl/devkit';
|
||||||
|
|
||||||
import { join } from 'path';
|
import { join } from 'path';
|
||||||
@ -46,7 +47,7 @@ export interface Schema {
|
|||||||
commit?: { name: string; email: string; message?: string };
|
commit?: { name: string; email: string; message?: string };
|
||||||
defaultBase: string;
|
defaultBase: string;
|
||||||
linter: 'tslint' | 'eslint';
|
linter: 'tslint' | 'eslint';
|
||||||
packageManager?: 'npm' | 'yarn' | 'pnpm';
|
packageManager?: PackageManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
function generatePreset(host: Tree, opts: Schema) {
|
function generatePreset(host: Tree, opts: Schema) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user