mirror of
https://github.com/tauri-apps/tauri.git
synced 2026-04-01 10:01:07 +02:00
refactor(cli.js): rework yarn check (#1611)
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
This commit is contained in:
@@ -40,14 +40,14 @@ async function manageDependencies(
|
||||
|
||||
if (existsSync(resolve.app('package.json'))) {
|
||||
for (const dependency of dependencies) {
|
||||
const currentVersion = await getNpmPackageVersion(dependency)
|
||||
const currentVersion = getNpmPackageVersion(dependency)
|
||||
if (currentVersion === null) {
|
||||
log(`Installing ${dependency}...`)
|
||||
if (
|
||||
managementType === ManagementType.Install ||
|
||||
managementType === ManagementType.InstallDev
|
||||
) {
|
||||
const packageManager = (await useYarn()) ? 'YARN' : 'NPM'
|
||||
const packageManager = useYarn() ? 'YARN' : 'NPM'
|
||||
const inquired = (await inquirer.prompt([
|
||||
{
|
||||
type: 'confirm',
|
||||
@@ -62,15 +62,15 @@ async function manageDependencies(
|
||||
])) as { answer: boolean }
|
||||
if (inquired.answer) {
|
||||
if (managementType === ManagementType.Install) {
|
||||
await installNpmPackage(dependency)
|
||||
installNpmPackage(dependency)
|
||||
} else if (managementType === ManagementType.InstallDev) {
|
||||
await installNpmDevPackage(dependency)
|
||||
installNpmDevPackage(dependency)
|
||||
}
|
||||
installedDeps.push(dependency)
|
||||
}
|
||||
}
|
||||
} else if (managementType === ManagementType.Update) {
|
||||
const latestVersion = await getNpmLatestVersion(dependency)
|
||||
const latestVersion = getNpmLatestVersion(dependency)
|
||||
if (semverLt(currentVersion, latestVersion)) {
|
||||
const inquired = (await inquirer.prompt([
|
||||
{
|
||||
|
||||
@@ -8,17 +8,10 @@ import { appDir, resolve as appResolve } from '../../helpers/app-paths'
|
||||
import { existsSync } from 'fs'
|
||||
import semver from 'semver'
|
||||
|
||||
async function useYarn(): Promise<boolean> {
|
||||
const hasYarnLockfile = existsSync(appResolve.app('yarn.lock'))
|
||||
if (hasYarnLockfile) {
|
||||
return true
|
||||
} else {
|
||||
return await new Promise((resolve) => {
|
||||
const child = crossSpawnSync('npm', ['--version'])
|
||||
resolve(!!(child.status ?? child.error))
|
||||
})
|
||||
}
|
||||
}
|
||||
const useYarn = (): boolean =>
|
||||
process.env.npm_execpath
|
||||
? process.env.npm_execpath.includes('yarn')
|
||||
: existsSync(appResolve.app('yarn.lock'))
|
||||
|
||||
function getCrateLatestVersion(crateName: string): string | null {
|
||||
const child = crossSpawnSync('cargo', ['search', crateName, '--limit', '1'])
|
||||
@@ -32,8 +25,8 @@ function getCrateLatestVersion(crateName: string): string | null {
|
||||
}
|
||||
}
|
||||
|
||||
async function getNpmLatestVersion(packageName: string): Promise<string> {
|
||||
if (await useYarn()) {
|
||||
function getNpmLatestVersion(packageName: string): string {
|
||||
if (useYarn()) {
|
||||
const child = crossSpawnSync(
|
||||
'yarn',
|
||||
['info', packageName, 'versions', '--json'],
|
||||
@@ -52,10 +45,8 @@ async function getNpmLatestVersion(packageName: string): Promise<string> {
|
||||
}
|
||||
}
|
||||
|
||||
async function getNpmPackageVersion(
|
||||
packageName: string
|
||||
): Promise<string | null> {
|
||||
const child = (await useYarn())
|
||||
function getNpmPackageVersion(packageName: string): string | null {
|
||||
const child = useYarn()
|
||||
? crossSpawnSync(
|
||||
'yarn',
|
||||
['list', '--pattern', packageName, '--depth', '0'],
|
||||
@@ -76,16 +67,16 @@ async function getNpmPackageVersion(
|
||||
}
|
||||
}
|
||||
|
||||
async function installNpmPackage(packageName: string): Promise<void> {
|
||||
if (await useYarn()) {
|
||||
function installNpmPackage(packageName: string): void {
|
||||
if (useYarn()) {
|
||||
spawnSync('yarn', ['add', packageName], appDir)
|
||||
} else {
|
||||
spawnSync('npm', ['install', packageName], appDir)
|
||||
}
|
||||
}
|
||||
|
||||
async function installNpmDevPackage(packageName: string): Promise<void> {
|
||||
if (await useYarn()) {
|
||||
function installNpmDevPackage(packageName: string): void {
|
||||
if (useYarn()) {
|
||||
spawnSync('yarn', ['add', packageName, '--dev'], appDir)
|
||||
} else {
|
||||
spawnSync('npm', ['install', packageName, '--save-dev'], appDir)
|
||||
@@ -93,8 +84,7 @@ async function installNpmDevPackage(packageName: string): Promise<void> {
|
||||
}
|
||||
|
||||
function updateNpmPackage(packageName: string): void {
|
||||
const usesYarn = existsSync(appResolve.app('yarn.lock'))
|
||||
if (usesYarn) {
|
||||
if (useYarn()) {
|
||||
spawnSync('yarn', ['upgrade', packageName, '--latest'], appDir)
|
||||
} else {
|
||||
spawnSync('npm', ['install', `${packageName}@latest`], appDir)
|
||||
|
||||
Reference in New Issue
Block a user