fix(cli): link and unlink extensions/modes with pnpm instead of yarn (#6144)
This commit is contained in:
parent
b880d2acf9
commit
125a174298
@ -2,7 +2,7 @@ import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { execa } from 'execa';
|
||||
import { keywords } from './enums/index.js';
|
||||
import { validateYarn, addExtensionToConfig, addModeToConfig } from './utils/index.js';
|
||||
import { validatePnpm, addExtensionToConfig, addModeToConfig } from './utils/index.js';
|
||||
|
||||
async function linkPackage(packageDir, options, addToConfig, keyword) {
|
||||
const { viewerDirectory } = options;
|
||||
@ -22,19 +22,18 @@ async function linkPackage(packageDir, options, addToConfig, keyword) {
|
||||
|
||||
const version = packageJSON.version;
|
||||
|
||||
// make sure yarn is installed
|
||||
await validateYarn();
|
||||
// make sure pnpm is installed
|
||||
await validatePnpm();
|
||||
|
||||
// change directory to packageDir and execute yarn link
|
||||
process.chdir(packageDir);
|
||||
// resolve the package directory before changing the working directory
|
||||
const resolvedPackageDir = path.resolve(packageDir);
|
||||
|
||||
let results;
|
||||
results = await execa(`yarn`, ['link']);
|
||||
|
||||
// change directory to OHIF Platform root and execute yarn link
|
||||
// change directory to the OHIF Platform root and link the local package there.
|
||||
// Linking mutates the lockfile, so disable the workspace's frozen-lockfile
|
||||
// default for this call (pnpm link rejects --no-frozen-lockfile).
|
||||
process.chdir(`${viewerDirectory}/../..`);
|
||||
|
||||
results = await execa(`yarn`, ['link', packageName]);
|
||||
let results = await execa('pnpm', ['link', resolvedPackageDir, '--config.frozen-lockfile=false']);
|
||||
console.log(results.stdout);
|
||||
|
||||
// Add the node_modules of the linked package so that webpack
|
||||
@ -63,7 +62,7 @@ async function linkPackage(packageDir, options, addToConfig, keyword) {
|
||||
});
|
||||
|
||||
// run prettier on the webpack config
|
||||
results = await execa(`yarn`, ['prettier', '--write', webpackPwaPath]);
|
||||
results = await execa('pnpm', ['exec', 'prettier', '--write', webpackPwaPath]);
|
||||
}
|
||||
|
||||
function linkExtension(packageDir, options) {
|
||||
|
||||
@ -1,18 +1,20 @@
|
||||
import { execa } from 'execa';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { validateYarn, removeExtensionFromConfig, removeModeFromConfig } from './utils/index.js';
|
||||
import { validatePnpm, removeExtensionFromConfig, removeModeFromConfig } from './utils/index.js';
|
||||
|
||||
const linkPackage = async (packageName, options, removeFromConfig) => {
|
||||
const { viewerDirectory } = options;
|
||||
|
||||
// make sure yarn is installed
|
||||
await validateYarn();
|
||||
// make sure pnpm is installed
|
||||
await validatePnpm();
|
||||
|
||||
// change directory to OHIF Platform root and execute yarn link
|
||||
process.chdir(viewerDirectory);
|
||||
// change directory to the OHIF Platform root, where the package was linked.
|
||||
// Unlinking mutates the lockfile, so disable the workspace's frozen-lockfile
|
||||
// default for this call (pnpm unlink rejects --no-frozen-lockfile).
|
||||
process.chdir(`${viewerDirectory}/../..`);
|
||||
|
||||
const results = await execa(`yarn`, ['unlink', packageName]);
|
||||
const results = await execa('pnpm', ['unlink', packageName, '--config.frozen-lockfile=false']);
|
||||
console.log(results.stdout);
|
||||
|
||||
const webpackPwaPath = path.join(viewerDirectory, '.webpack', 'webpack.pwa.js');
|
||||
@ -23,7 +25,7 @@ const linkPackage = async (packageName, options, removeFromConfig) => {
|
||||
removeFromConfig(packageName);
|
||||
|
||||
// run prettier on the webpack config
|
||||
await execa(`yarn`, ['prettier', '--write', webpackPwaPath]);
|
||||
await execa('pnpm', ['exec', 'prettier', '--write', webpackPwaPath]);
|
||||
};
|
||||
|
||||
async function removePathFromWebpackConfig(webpackConfigPath, packageName) {
|
||||
|
||||
@ -19,7 +19,7 @@ import editPackageJson from './editPackageJson.js';
|
||||
import createLicense from './createLicense.js';
|
||||
import createReadme from './createReadme.js';
|
||||
import prettyPrint from './prettyPrint.js';
|
||||
import validateYarn from './validateYarn.js';
|
||||
import validatePnpm from './validatePnpm.js';
|
||||
|
||||
export {
|
||||
getYarnInfo,
|
||||
@ -43,5 +43,5 @@ export {
|
||||
createLicense,
|
||||
createReadme,
|
||||
prettyPrint,
|
||||
validateYarn,
|
||||
validatePnpm,
|
||||
};
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import chalk from 'chalk';
|
||||
import { execa } from 'execa';
|
||||
|
||||
export default async function validateYarn() {
|
||||
export default async function validatePnpm() {
|
||||
try {
|
||||
await execa('yarn', ['--version']);
|
||||
await execa('pnpm', ['--version']);
|
||||
} catch (err) {
|
||||
console.log(
|
||||
'%s Yarn is not installed, please install it before linking your extension',
|
||||
'%s pnpm is not installed, please install it before linking your extension',
|
||||
chalk.red.bold('ERROR')
|
||||
);
|
||||
process.exit(1);
|
||||
Loading…
Reference in New Issue
Block a user