feat(devkit): reexport package manager methods in devkit
This commit is contained in:
parent
632d2f72ae
commit
5e6cf9646b
@ -60,9 +60,11 @@
|
|||||||
- [applyChangesToString](../../angular/nx-devkit/index#applychangestostring)
|
- [applyChangesToString](../../angular/nx-devkit/index#applychangestostring)
|
||||||
- [convertNxExecutor](../../angular/nx-devkit/index#convertnxexecutor)
|
- [convertNxExecutor](../../angular/nx-devkit/index#convertnxexecutor)
|
||||||
- [convertNxGenerator](../../angular/nx-devkit/index#convertnxgenerator)
|
- [convertNxGenerator](../../angular/nx-devkit/index#convertnxgenerator)
|
||||||
|
- [detectPackageManager](../../angular/nx-devkit/index#detectpackagemanager)
|
||||||
- [formatFiles](../../angular/nx-devkit/index#formatfiles)
|
- [formatFiles](../../angular/nx-devkit/index#formatfiles)
|
||||||
- [generateFiles](../../angular/nx-devkit/index#generatefiles)
|
- [generateFiles](../../angular/nx-devkit/index#generatefiles)
|
||||||
- [getPackageManagerCommand](../../angular/nx-devkit/index#getpackagemanagercommand)
|
- [getPackageManagerCommand](../../angular/nx-devkit/index#getpackagemanagercommand)
|
||||||
|
- [getPackageManagerVersion](../../angular/nx-devkit/index#getpackagemanagerversion)
|
||||||
- [getProjects](../../angular/nx-devkit/index#getprojects)
|
- [getProjects](../../angular/nx-devkit/index#getprojects)
|
||||||
- [getWorkspaceLayout](../../angular/nx-devkit/index#getworkspacelayout)
|
- [getWorkspaceLayout](../../angular/nx-devkit/index#getworkspacelayout)
|
||||||
- [getWorkspacePath](../../angular/nx-devkit/index#getworkspacepath)
|
- [getWorkspacePath](../../angular/nx-devkit/index#getworkspacepath)
|
||||||
@ -578,6 +580,22 @@ Convert an Nx Generator into an Angular Devkit Schematic
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### detectPackageManager
|
||||||
|
|
||||||
|
▸ **detectPackageManager**(`dir?`: _string_): [_PackageManager_](../../angular/nx-devkit/index#packagemanager)
|
||||||
|
|
||||||
|
Detects which package manager is used in the workspace based on the lock file.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Default value |
|
||||||
|
| :---- | :------- | :------------ |
|
||||||
|
| `dir` | _string_ | '' |
|
||||||
|
|
||||||
|
**Returns:** [_PackageManager_](../../angular/nx-devkit/index#packagemanager)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### formatFiles
|
### formatFiles
|
||||||
|
|
||||||
▸ **formatFiles**(`host`: [_Tree_](../../angular/nx-devkit/index#tree)): _Promise_<void\>
|
▸ **formatFiles**(`host`: [_Tree_](../../angular/nx-devkit/index#tree)): _Promise_<void\>
|
||||||
@ -635,7 +653,7 @@ doesn't get confused about incorrect TypeScript files.
|
|||||||
|
|
||||||
### getPackageManagerCommand
|
### getPackageManagerCommand
|
||||||
|
|
||||||
▸ **getPackageManagerCommand**(`packageManager?`: [_PackageManager_](../../angular/nx-devkit/index#packagemanager)): _object_
|
▸ **getPackageManagerCommand**(`packageManager?`: [_PackageManager_](../../angular/nx-devkit/index#packagemanager)): PackageManagerCommands
|
||||||
|
|
||||||
Returns commands for the package manager used in the workspace.
|
Returns commands for the package manager used in the workspace.
|
||||||
By default, the package manager is derived based on the lock file,
|
By default, the package manager is derived based on the lock file,
|
||||||
@ -653,17 +671,25 @@ execSync(`${getPackageManagerCommand().addDev} my-dev-package`);
|
|||||||
| :--------------- | :--------------------------------------------------------------- |
|
| :--------------- | :--------------------------------------------------------------- |
|
||||||
| `packageManager` | [_PackageManager_](../../angular/nx-devkit/index#packagemanager) |
|
| `packageManager` | [_PackageManager_](../../angular/nx-devkit/index#packagemanager) |
|
||||||
|
|
||||||
**Returns:** _object_
|
**Returns:** PackageManagerCommands
|
||||||
|
|
||||||
| Name | Type |
|
---
|
||||||
| :-------- | :------------------------------------------------- |
|
|
||||||
| `add` | _string_ |
|
### getPackageManagerVersion
|
||||||
| `addDev` | _string_ |
|
|
||||||
| `exec` | _string_ |
|
▸ **getPackageManagerVersion**(`packageManager?`: [_PackageManager_](../../angular/nx-devkit/index#packagemanager)): _string_
|
||||||
| `install` | _string_ |
|
|
||||||
| `list` | _string_ |
|
Returns the version of the package manager used in the workspace.
|
||||||
| `rm` | _string_ |
|
By default, the package manager is derived based on the lock file,
|
||||||
| `run` | (`script`: _string_, `args`: _string_) => _string_ |
|
but it can also be passed in explicitly.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
|
||||||
|
| Name | Type |
|
||||||
|
| :--------------- | :--------------------------------------------------------------- |
|
||||||
|
| `packageManager` | [_PackageManager_](../../angular/nx-devkit/index#packagemanager) |
|
||||||
|
|
||||||
|
**Returns:** _string_
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@ -60,9 +60,11 @@
|
|||||||
- [applyChangesToString](../../node/nx-devkit/index#applychangestostring)
|
- [applyChangesToString](../../node/nx-devkit/index#applychangestostring)
|
||||||
- [convertNxExecutor](../../node/nx-devkit/index#convertnxexecutor)
|
- [convertNxExecutor](../../node/nx-devkit/index#convertnxexecutor)
|
||||||
- [convertNxGenerator](../../node/nx-devkit/index#convertnxgenerator)
|
- [convertNxGenerator](../../node/nx-devkit/index#convertnxgenerator)
|
||||||
|
- [detectPackageManager](../../node/nx-devkit/index#detectpackagemanager)
|
||||||
- [formatFiles](../../node/nx-devkit/index#formatfiles)
|
- [formatFiles](../../node/nx-devkit/index#formatfiles)
|
||||||
- [generateFiles](../../node/nx-devkit/index#generatefiles)
|
- [generateFiles](../../node/nx-devkit/index#generatefiles)
|
||||||
- [getPackageManagerCommand](../../node/nx-devkit/index#getpackagemanagercommand)
|
- [getPackageManagerCommand](../../node/nx-devkit/index#getpackagemanagercommand)
|
||||||
|
- [getPackageManagerVersion](../../node/nx-devkit/index#getpackagemanagerversion)
|
||||||
- [getProjects](../../node/nx-devkit/index#getprojects)
|
- [getProjects](../../node/nx-devkit/index#getprojects)
|
||||||
- [getWorkspaceLayout](../../node/nx-devkit/index#getworkspacelayout)
|
- [getWorkspaceLayout](../../node/nx-devkit/index#getworkspacelayout)
|
||||||
- [getWorkspacePath](../../node/nx-devkit/index#getworkspacepath)
|
- [getWorkspacePath](../../node/nx-devkit/index#getworkspacepath)
|
||||||
@ -578,6 +580,22 @@ Convert an Nx Generator into an Angular Devkit Schematic
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### detectPackageManager
|
||||||
|
|
||||||
|
▸ **detectPackageManager**(`dir?`: _string_): [_PackageManager_](../../node/nx-devkit/index#packagemanager)
|
||||||
|
|
||||||
|
Detects which package manager is used in the workspace based on the lock file.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Default value |
|
||||||
|
| :---- | :------- | :------------ |
|
||||||
|
| `dir` | _string_ | '' |
|
||||||
|
|
||||||
|
**Returns:** [_PackageManager_](../../node/nx-devkit/index#packagemanager)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### formatFiles
|
### formatFiles
|
||||||
|
|
||||||
▸ **formatFiles**(`host`: [_Tree_](../../node/nx-devkit/index#tree)): _Promise_<void\>
|
▸ **formatFiles**(`host`: [_Tree_](../../node/nx-devkit/index#tree)): _Promise_<void\>
|
||||||
@ -635,7 +653,7 @@ doesn't get confused about incorrect TypeScript files.
|
|||||||
|
|
||||||
### getPackageManagerCommand
|
### getPackageManagerCommand
|
||||||
|
|
||||||
▸ **getPackageManagerCommand**(`packageManager?`: [_PackageManager_](../../node/nx-devkit/index#packagemanager)): _object_
|
▸ **getPackageManagerCommand**(`packageManager?`: [_PackageManager_](../../node/nx-devkit/index#packagemanager)): PackageManagerCommands
|
||||||
|
|
||||||
Returns commands for the package manager used in the workspace.
|
Returns commands for the package manager used in the workspace.
|
||||||
By default, the package manager is derived based on the lock file,
|
By default, the package manager is derived based on the lock file,
|
||||||
@ -653,17 +671,25 @@ execSync(`${getPackageManagerCommand().addDev} my-dev-package`);
|
|||||||
| :--------------- | :------------------------------------------------------------ |
|
| :--------------- | :------------------------------------------------------------ |
|
||||||
| `packageManager` | [_PackageManager_](../../node/nx-devkit/index#packagemanager) |
|
| `packageManager` | [_PackageManager_](../../node/nx-devkit/index#packagemanager) |
|
||||||
|
|
||||||
**Returns:** _object_
|
**Returns:** PackageManagerCommands
|
||||||
|
|
||||||
| Name | Type |
|
---
|
||||||
| :-------- | :------------------------------------------------- |
|
|
||||||
| `add` | _string_ |
|
### getPackageManagerVersion
|
||||||
| `addDev` | _string_ |
|
|
||||||
| `exec` | _string_ |
|
▸ **getPackageManagerVersion**(`packageManager?`: [_PackageManager_](../../node/nx-devkit/index#packagemanager)): _string_
|
||||||
| `install` | _string_ |
|
|
||||||
| `list` | _string_ |
|
Returns the version of the package manager used in the workspace.
|
||||||
| `rm` | _string_ |
|
By default, the package manager is derived based on the lock file,
|
||||||
| `run` | (`script`: _string_, `args`: _string_) => _string_ |
|
but it can also be passed in explicitly.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
|
||||||
|
| Name | Type |
|
||||||
|
| :--------------- | :------------------------------------------------------------ |
|
||||||
|
| `packageManager` | [_PackageManager_](../../node/nx-devkit/index#packagemanager) |
|
||||||
|
|
||||||
|
**Returns:** _string_
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@ -60,9 +60,11 @@
|
|||||||
- [applyChangesToString](../../react/nx-devkit/index#applychangestostring)
|
- [applyChangesToString](../../react/nx-devkit/index#applychangestostring)
|
||||||
- [convertNxExecutor](../../react/nx-devkit/index#convertnxexecutor)
|
- [convertNxExecutor](../../react/nx-devkit/index#convertnxexecutor)
|
||||||
- [convertNxGenerator](../../react/nx-devkit/index#convertnxgenerator)
|
- [convertNxGenerator](../../react/nx-devkit/index#convertnxgenerator)
|
||||||
|
- [detectPackageManager](../../react/nx-devkit/index#detectpackagemanager)
|
||||||
- [formatFiles](../../react/nx-devkit/index#formatfiles)
|
- [formatFiles](../../react/nx-devkit/index#formatfiles)
|
||||||
- [generateFiles](../../react/nx-devkit/index#generatefiles)
|
- [generateFiles](../../react/nx-devkit/index#generatefiles)
|
||||||
- [getPackageManagerCommand](../../react/nx-devkit/index#getpackagemanagercommand)
|
- [getPackageManagerCommand](../../react/nx-devkit/index#getpackagemanagercommand)
|
||||||
|
- [getPackageManagerVersion](../../react/nx-devkit/index#getpackagemanagerversion)
|
||||||
- [getProjects](../../react/nx-devkit/index#getprojects)
|
- [getProjects](../../react/nx-devkit/index#getprojects)
|
||||||
- [getWorkspaceLayout](../../react/nx-devkit/index#getworkspacelayout)
|
- [getWorkspaceLayout](../../react/nx-devkit/index#getworkspacelayout)
|
||||||
- [getWorkspacePath](../../react/nx-devkit/index#getworkspacepath)
|
- [getWorkspacePath](../../react/nx-devkit/index#getworkspacepath)
|
||||||
@ -578,6 +580,22 @@ Convert an Nx Generator into an Angular Devkit Schematic
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### detectPackageManager
|
||||||
|
|
||||||
|
▸ **detectPackageManager**(`dir?`: _string_): [_PackageManager_](../../react/nx-devkit/index#packagemanager)
|
||||||
|
|
||||||
|
Detects which package manager is used in the workspace based on the lock file.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Default value |
|
||||||
|
| :---- | :------- | :------------ |
|
||||||
|
| `dir` | _string_ | '' |
|
||||||
|
|
||||||
|
**Returns:** [_PackageManager_](../../react/nx-devkit/index#packagemanager)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### formatFiles
|
### formatFiles
|
||||||
|
|
||||||
▸ **formatFiles**(`host`: [_Tree_](../../react/nx-devkit/index#tree)): _Promise_<void\>
|
▸ **formatFiles**(`host`: [_Tree_](../../react/nx-devkit/index#tree)): _Promise_<void\>
|
||||||
@ -635,7 +653,7 @@ doesn't get confused about incorrect TypeScript files.
|
|||||||
|
|
||||||
### getPackageManagerCommand
|
### getPackageManagerCommand
|
||||||
|
|
||||||
▸ **getPackageManagerCommand**(`packageManager?`: [_PackageManager_](../../react/nx-devkit/index#packagemanager)): _object_
|
▸ **getPackageManagerCommand**(`packageManager?`: [_PackageManager_](../../react/nx-devkit/index#packagemanager)): PackageManagerCommands
|
||||||
|
|
||||||
Returns commands for the package manager used in the workspace.
|
Returns commands for the package manager used in the workspace.
|
||||||
By default, the package manager is derived based on the lock file,
|
By default, the package manager is derived based on the lock file,
|
||||||
@ -653,17 +671,25 @@ execSync(`${getPackageManagerCommand().addDev} my-dev-package`);
|
|||||||
| :--------------- | :------------------------------------------------------------- |
|
| :--------------- | :------------------------------------------------------------- |
|
||||||
| `packageManager` | [_PackageManager_](../../react/nx-devkit/index#packagemanager) |
|
| `packageManager` | [_PackageManager_](../../react/nx-devkit/index#packagemanager) |
|
||||||
|
|
||||||
**Returns:** _object_
|
**Returns:** PackageManagerCommands
|
||||||
|
|
||||||
| Name | Type |
|
---
|
||||||
| :-------- | :------------------------------------------------- |
|
|
||||||
| `add` | _string_ |
|
### getPackageManagerVersion
|
||||||
| `addDev` | _string_ |
|
|
||||||
| `exec` | _string_ |
|
▸ **getPackageManagerVersion**(`packageManager?`: [_PackageManager_](../../react/nx-devkit/index#packagemanager)): _string_
|
||||||
| `install` | _string_ |
|
|
||||||
| `list` | _string_ |
|
Returns the version of the package manager used in the workspace.
|
||||||
| `rm` | _string_ |
|
By default, the package manager is derived based on the lock file,
|
||||||
| `run` | (`script`: _string_, `args`: _string_) => _string_ |
|
but it can also be passed in explicitly.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
|
||||||
|
| Name | Type |
|
||||||
|
| :--------------- | :------------------------------------------------------------- |
|
||||||
|
| `packageManager` | [_PackageManager_](../../react/nx-devkit/index#packagemanager) |
|
||||||
|
|
||||||
|
**Returns:** _string_
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,11 @@ export type {
|
|||||||
} 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 type { PackageManager } from '@nrwl/tao/src/shared/package-manager';
|
export type { PackageManager } from '@nrwl/tao/src/shared/package-manager';
|
||||||
export { getPackageManagerCommand } from '@nrwl/tao/src/shared/package-manager';
|
export {
|
||||||
|
getPackageManagerCommand,
|
||||||
|
detectPackageManager,
|
||||||
|
getPackageManagerVersion,
|
||||||
|
} from '@nrwl/tao/src/shared/package-manager';
|
||||||
export type { Target } from '@nrwl/tao/src/commands/run';
|
export type { Target } from '@nrwl/tao/src/commands/run';
|
||||||
export { runExecutor } from '@nrwl/tao/src/commands/run';
|
export { runExecutor } from '@nrwl/tao/src/commands/run';
|
||||||
|
|
||||||
|
|||||||
@ -6,11 +6,7 @@ import { gt, lte } from 'semver';
|
|||||||
import { dirSync } from 'tmp';
|
import { dirSync } from 'tmp';
|
||||||
import { logger } from '../shared/logger';
|
import { logger } from '../shared/logger';
|
||||||
import { convertToCamelCase, handleErrors } from '../shared/params';
|
import { convertToCamelCase, handleErrors } from '../shared/params';
|
||||||
import {
|
import { getPackageManagerCommand } from '../shared/package-manager';
|
||||||
detectPackageManager,
|
|
||||||
getPackageManagerCommand,
|
|
||||||
PackageManager,
|
|
||||||
} from '../shared/package-manager';
|
|
||||||
import { FsTree } from '../shared/tree';
|
import { FsTree } from '../shared/tree';
|
||||||
import { flushChanges } from './generate';
|
import { flushChanges } from './generate';
|
||||||
import {
|
import {
|
||||||
@ -424,7 +420,7 @@ function versions(root: string, from: { [p: string]: string }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// testing-fetch-start
|
// testing-fetch-start
|
||||||
function createFetcher(packageManager: PackageManager) {
|
function createFetcher() {
|
||||||
const cache = {};
|
const cache = {};
|
||||||
return async function f(
|
return async function f(
|
||||||
packageName: string,
|
packageName: string,
|
||||||
@ -433,7 +429,7 @@ function createFetcher(packageManager: PackageManager) {
|
|||||||
if (!cache[`${packageName}-${packageVersion}`]) {
|
if (!cache[`${packageName}-${packageVersion}`]) {
|
||||||
const dir = dirSync().name;
|
const dir = dirSync().name;
|
||||||
logger.info(`Fetching ${packageName}@${packageVersion}`);
|
logger.info(`Fetching ${packageName}@${packageVersion}`);
|
||||||
const pmc = getPackageManagerCommand(packageManager);
|
const pmc = getPackageManagerCommand();
|
||||||
execSync(`${pmc.add} ${packageName}@${packageVersion}`, {
|
execSync(`${pmc.add} ${packageName}@${packageVersion}`, {
|
||||||
stdio: [],
|
stdio: [],
|
||||||
cwd: dir,
|
cwd: dir,
|
||||||
@ -539,14 +535,13 @@ async function generateMigrationsJsonAndUpdatePackageJson(
|
|||||||
to: { [p: string]: string };
|
to: { [p: string]: string };
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
const packageManager = detectPackageManager();
|
const pmc = getPackageManagerCommand();
|
||||||
const pmc = getPackageManagerCommand(packageManager);
|
|
||||||
try {
|
try {
|
||||||
logger.info(`Fetching meta data about packages.`);
|
logger.info(`Fetching meta data about packages.`);
|
||||||
logger.info(`It may take a few minutes.`);
|
logger.info(`It may take a few minutes.`);
|
||||||
const migrator = new Migrator({
|
const migrator = new Migrator({
|
||||||
versions: versions(root, opts.from),
|
versions: versions(root, opts.from),
|
||||||
fetch: createFetcher(packageManager),
|
fetch: createFetcher(),
|
||||||
from: opts.from,
|
from: opts.from,
|
||||||
to: opts.to,
|
to: opts.to,
|
||||||
});
|
});
|
||||||
@ -611,7 +606,7 @@ function installAngularDevkitIfNecessaryToExecuteLegacyMigrations(
|
|||||||
);
|
);
|
||||||
if (!hasAngularDevkitMigrations) return false;
|
if (!hasAngularDevkitMigrations) return false;
|
||||||
|
|
||||||
const pmCommands = getPackageManagerCommand(detectPackageManager());
|
const pmCommands = getPackageManagerCommand();
|
||||||
const devkitInstalled =
|
const devkitInstalled =
|
||||||
execSync(`${pmCommands.list} @angular-devkit/schematics`)
|
execSync(`${pmCommands.list} @angular-devkit/schematics`)
|
||||||
.toString()
|
.toString()
|
||||||
@ -630,13 +625,13 @@ function installAngularDevkitIfNecessaryToExecuteLegacyMigrations(
|
|||||||
}
|
}
|
||||||
|
|
||||||
function removeAngularDevkitMigrations() {
|
function removeAngularDevkitMigrations() {
|
||||||
const pmCommands = getPackageManagerCommand(detectPackageManager());
|
const pmCommands = getPackageManagerCommand();
|
||||||
execSync(`${pmCommands.rm} @angular-devkit/schematics`);
|
execSync(`${pmCommands.rm} @angular-devkit/schematics`);
|
||||||
execSync(`${pmCommands.rm} @angular-devkit/core`);
|
execSync(`${pmCommands.rm} @angular-devkit/core`);
|
||||||
}
|
}
|
||||||
|
|
||||||
function runInstall() {
|
function runInstall() {
|
||||||
const pmCommands = getPackageManagerCommand(detectPackageManager());
|
const pmCommands = getPackageManagerCommand();
|
||||||
logger.info(
|
logger.info(
|
||||||
`NX Running '${pmCommands.install}' to make sure necessary packages are installed`
|
`NX Running '${pmCommands.install}' to make sure necessary packages are installed`
|
||||||
);
|
);
|
||||||
|
|||||||
@ -22,7 +22,7 @@ import {
|
|||||||
toNewFormatOrNull,
|
toNewFormatOrNull,
|
||||||
toOldFormatOrNull,
|
toOldFormatOrNull,
|
||||||
workspaceConfigName,
|
workspaceConfigName,
|
||||||
} from '@nrwl/tao/src/shared/workspace';
|
} from '../shared/workspace';
|
||||||
import { dirname, extname, resolve, join } from 'path';
|
import { dirname, extname, resolve, join } from 'path';
|
||||||
import { FileBuffer } from '@angular-devkit/core/src/virtual-fs/host/interface';
|
import { FileBuffer } from '@angular-devkit/core/src/virtual-fs/host/interface';
|
||||||
import { EMPTY, Observable, of, concat } from 'rxjs';
|
import { EMPTY, Observable, of, concat } from 'rxjs';
|
||||||
|
|||||||
@ -4,6 +4,19 @@ import { join } from 'path';
|
|||||||
|
|
||||||
export type PackageManager = 'yarn' | 'pnpm' | 'npm';
|
export type PackageManager = 'yarn' | 'pnpm' | 'npm';
|
||||||
|
|
||||||
|
export interface PackageManagerCommands {
|
||||||
|
install: string;
|
||||||
|
add: string;
|
||||||
|
addDev: string;
|
||||||
|
rm: string;
|
||||||
|
exec: string;
|
||||||
|
list: string;
|
||||||
|
run: (script: string, args: string) => string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Detects which package manager is used in the workspace based on the lock file.
|
||||||
|
*/
|
||||||
export function detectPackageManager(dir: string = ''): PackageManager {
|
export function detectPackageManager(dir: string = ''): PackageManager {
|
||||||
return existsSync(join(dir, 'yarn.lock'))
|
return existsSync(join(dir, 'yarn.lock'))
|
||||||
? 'yarn'
|
? 'yarn'
|
||||||
@ -22,45 +35,32 @@ export function detectPackageManager(dir: string = ''): PackageManager {
|
|||||||
* ```javascript
|
* ```javascript
|
||||||
* execSync(`${getPackageManagerCommand().addDev} my-dev-package`);
|
* execSync(`${getPackageManagerCommand().addDev} my-dev-package`);
|
||||||
* ```
|
* ```
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
export function getPackageManagerCommand(
|
export function getPackageManagerCommand(
|
||||||
packageManager: PackageManager = detectPackageManager()
|
packageManager: PackageManager = detectPackageManager()
|
||||||
): {
|
): PackageManagerCommands {
|
||||||
install: string;
|
const commands: { [pm in PackageManager]: () => PackageManagerCommands } = {
|
||||||
add: string;
|
yarn: () => ({
|
||||||
addDev: string;
|
install: 'yarn',
|
||||||
rm: string;
|
add: 'yarn add',
|
||||||
exec: string;
|
addDev: 'yarn add -D',
|
||||||
list: string;
|
rm: 'yarn remove',
|
||||||
run: (script: string, args: string) => string;
|
exec: 'yarn',
|
||||||
} {
|
run: (script: string, args: string) => `yarn ${script} ${args}`,
|
||||||
switch (packageManager) {
|
list: 'yarn list',
|
||||||
case 'yarn':
|
}),
|
||||||
return {
|
pnpm: () => ({
|
||||||
install: 'yarn',
|
install: 'pnpm install --no-frozen-lockfile', // explicitly disable in case of CI
|
||||||
add: 'yarn add',
|
add: 'pnpm add',
|
||||||
addDev: 'yarn add -D',
|
addDev: 'pnpm add -D',
|
||||||
rm: 'yarn remove',
|
rm: 'pnpm rm',
|
||||||
exec: 'yarn',
|
exec: 'pnpx',
|
||||||
run: (script: string, args: string) => `yarn ${script} ${args}`,
|
run: (script: string, args: string) => `pnpm run ${script} -- ${args}`,
|
||||||
list: 'yarn list',
|
list: 'pnpm ls --depth 100',
|
||||||
};
|
}),
|
||||||
|
npm: () => {
|
||||||
|
process.env.npm_config_legacy_peer_deps ??= 'true';
|
||||||
|
|
||||||
case 'pnpm':
|
|
||||||
return {
|
|
||||||
install: 'pnpm install --no-frozen-lockfile', // explicitly disable in case of CI
|
|
||||||
add: 'pnpm add',
|
|
||||||
addDev: 'pnpm add -D',
|
|
||||||
rm: 'pnpm rm',
|
|
||||||
exec: 'pnpx',
|
|
||||||
run: (script: string, args: string) => `pnpm run ${script} -- ${args}`,
|
|
||||||
list: 'pnpm ls --depth 100',
|
|
||||||
};
|
|
||||||
|
|
||||||
case 'npm':
|
|
||||||
process.env.npm_config_legacy_peer_deps =
|
|
||||||
process.env.npm_config_legacy_peer_deps ?? 'true';
|
|
||||||
return {
|
return {
|
||||||
install: 'npm install',
|
install: 'npm install',
|
||||||
add: 'npm install',
|
add: 'npm install',
|
||||||
@ -70,11 +70,19 @@ export function getPackageManagerCommand(
|
|||||||
run: (script: string, args: string) => `npm run ${script} -- ${args}`,
|
run: (script: string, args: string) => `npm run ${script} -- ${args}`,
|
||||||
list: 'npm ls',
|
list: 'npm ls',
|
||||||
};
|
};
|
||||||
}
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
return commands[packageManager]();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the version of the package manager used in the workspace.
|
||||||
|
* By default, the package manager is derived based on the lock file,
|
||||||
|
* but it can also be passed in explicitly.
|
||||||
|
*/
|
||||||
export function getPackageManagerVersion(
|
export function getPackageManagerVersion(
|
||||||
packageManager: PackageManager
|
packageManager: PackageManager = detectPackageManager()
|
||||||
): string {
|
): string {
|
||||||
return execSync(`${packageManager} --version`).toString('utf-8').trim();
|
return execSync(`${packageManager} --version`).toString('utf-8').trim();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { readNxJson } from '../core/file-utils';
|
import { readNxJson } from '../core/file-utils';
|
||||||
import { output } from '../utilities/output';
|
import { output } from '../utilities/output';
|
||||||
import { getPackageManagerCommand } from '@nrwl/tao/src/shared/package-manager';
|
import { getPackageManagerCommand } from '@nrwl/devkit';
|
||||||
import { execSync } from 'child_process';
|
import { execSync } from 'child_process';
|
||||||
|
|
||||||
export async function connectToNxCloudUsingScan(scan: boolean): Promise<void> {
|
export async function connectToNxCloudUsingScan(scan: boolean): Promise<void> {
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
import { execSync } from 'child_process';
|
import { execSync } from 'child_process';
|
||||||
import { getPackageManagerCommand } from '@nrwl/tao/src/shared/package-manager';
|
import { getPackageManagerCommand, writeJsonFile } from '@nrwl/devkit';
|
||||||
import * as yargs from 'yargs';
|
import * as yargs from 'yargs';
|
||||||
import { nxVersion } from '../utils/versions';
|
import { nxVersion } from '../utils/versions';
|
||||||
import { writeFileSync } from 'fs';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|
||||||
const noop = (yargs: yargs.Argv): yargs.Argv => yargs;
|
const noop = (yargs: yargs.Argv): yargs.Argv => yargs;
|
||||||
@ -445,20 +444,17 @@ function taoPath() {
|
|||||||
|
|
||||||
const { dirSync } = require('tmp');
|
const { dirSync } = require('tmp');
|
||||||
const tmpDir = dirSync().name;
|
const tmpDir = dirSync().name;
|
||||||
writeFileSync(
|
writeJsonFile(path.join(tmpDir, 'package.json'), {
|
||||||
path.join(tmpDir, 'package.json'),
|
dependencies: {
|
||||||
JSON.stringify({
|
'@nrwl/tao': 'latest',
|
||||||
dependencies: {
|
|
||||||
'@nrwl/tao': 'latest',
|
|
||||||
|
|
||||||
// these deps are required for migrations written using angular devkit
|
// these deps are required for migrations written using angular devkit
|
||||||
'@angular-devkit/architect': 'latest',
|
'@angular-devkit/architect': 'latest',
|
||||||
'@angular-devkit/schematics': 'latest',
|
'@angular-devkit/schematics': 'latest',
|
||||||
'@angular-devkit/core': 'latest',
|
'@angular-devkit/core': 'latest',
|
||||||
},
|
},
|
||||||
license: 'MIT',
|
license: 'MIT',
|
||||||
})
|
});
|
||||||
);
|
|
||||||
|
|
||||||
execSync(packageManager.install, {
|
execSync(packageManager.install, {
|
||||||
cwd: tmpDir,
|
cwd: tmpDir,
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
import * as chalk from 'chalk';
|
import * as chalk from 'chalk';
|
||||||
import { execSync } from 'child_process';
|
|
||||||
import { appRootPath } from '../utilities/app-root';
|
import { appRootPath } from '../utilities/app-root';
|
||||||
import { detectPackageManager } from '@nrwl/tao/src/shared/package-manager';
|
import {
|
||||||
|
detectPackageManager,
|
||||||
|
getPackageManagerVersion,
|
||||||
|
readJsonFile,
|
||||||
|
} from '@nrwl/devkit';
|
||||||
import { output } from '../utilities/output';
|
import { output } from '../utilities/output';
|
||||||
import { readJsonFile } from '../utilities/fileutils';
|
|
||||||
|
|
||||||
export const packagesWeCareAbout = [
|
export const packagesWeCareAbout = [
|
||||||
'nx',
|
'nx',
|
||||||
@ -45,7 +47,7 @@ export const report = {
|
|||||||
*/
|
*/
|
||||||
function reportHandler() {
|
function reportHandler() {
|
||||||
const pm = detectPackageManager();
|
const pm = detectPackageManager();
|
||||||
const pmVersion = execSync(`${pm} --version`).toString('utf-8').trim();
|
const pmVersion = getPackageManagerVersion(pm);
|
||||||
|
|
||||||
const bodyLines = [
|
const bodyLines = [
|
||||||
`Node : ${process.versions.node}`,
|
`Node : ${process.versions.node}`,
|
||||||
|
|||||||
@ -5,19 +5,18 @@ import { copySync, removeSync } from 'fs-extra';
|
|||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as yargsParser from 'yargs-parser';
|
import * as yargsParser from 'yargs-parser';
|
||||||
import { appRootPath } from '../utilities/app-root';
|
import { appRootPath } from '../utilities/app-root';
|
||||||
import {
|
import { fileExists } from '../utilities/fileutils';
|
||||||
detectPackageManager,
|
|
||||||
getPackageManagerCommand,
|
|
||||||
} from '@nrwl/tao/src/shared/package-manager';
|
|
||||||
import {
|
|
||||||
fileExists,
|
|
||||||
readJsonFile,
|
|
||||||
writeJsonFile,
|
|
||||||
} from '../utilities/fileutils';
|
|
||||||
import { output } from '../utilities/output';
|
import { output } from '../utilities/output';
|
||||||
import type { CompilerOptions } from 'typescript';
|
import type { CompilerOptions } from 'typescript';
|
||||||
import { Workspaces } from '@nrwl/tao/src/shared/workspace';
|
import { Workspaces } from '@nrwl/tao/src/shared/workspace';
|
||||||
import { logger, normalizePath } from '@nrwl/devkit';
|
import {
|
||||||
|
logger,
|
||||||
|
normalizePath,
|
||||||
|
getPackageManagerCommand,
|
||||||
|
detectPackageManager,
|
||||||
|
readJsonFile,
|
||||||
|
writeJsonFile,
|
||||||
|
} from '@nrwl/devkit';
|
||||||
import { generate } from '@nrwl/tao/src/commands/generate';
|
import { generate } from '@nrwl/tao/src/commands/generate';
|
||||||
|
|
||||||
const rootDirectory = appRootPath;
|
const rootDirectory = appRootPath;
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { execSync } from 'child_process';
|
import { execSync } from 'child_process';
|
||||||
import { getPackageManagerCommand } from '@nrwl/tao/src/shared/package-manager';
|
import { getPackageManagerCommand } from '@nrwl/devkit';
|
||||||
import { ExecutorContext } from '@nrwl/devkit';
|
import type { ExecutorContext } from '@nrwl/devkit';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|
||||||
export interface RunScriptOptions {
|
export interface RunScriptOptions {
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
import * as chalk from 'chalk';
|
import * as chalk from 'chalk';
|
||||||
import { getPackageManagerCommand } from '@nrwl/tao/src/shared/package-manager';
|
import { getPackageManagerCommand, readJsonFile } from '@nrwl/devkit';
|
||||||
import { appRootPath } from '../app-root';
|
import { appRootPath } from '../app-root';
|
||||||
import { readJsonFile } from '../fileutils';
|
|
||||||
import { output } from '../output';
|
import { output } from '../output';
|
||||||
import type { PluginCapabilities } from './models';
|
import type { PluginCapabilities } from './models';
|
||||||
import { hasElements } from './shared';
|
import { hasElements } from './shared';
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user