mirror of https://github.com/tauri-apps/tauri
feat(cli): detect project NPM package manager on init (#10504)
* feat(cli): improve init behavior to ask once * chore(cli): bump version * fix(clippy): fix clippy warning * feat(cli): add `bun` and fix version bump msg * refactor(cli): auto detect the package manager * move function * update change file * update change file --------- Co-authored-by: Lucas Nogueira <lucas@tauri.app>
This commit is contained in:
parent
416f845784
commit
71d00646a9
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
"tauri-cli": patch:enhance
|
||||
"@tauri-apps/cli": patch:enhance
|
||||
---
|
||||
|
||||
Improve the `init` command behavior by detecting the project NPM package manager.
|
|
@ -37,6 +37,7 @@ impl PackageManager {
|
|||
let mut use_npm = false;
|
||||
let mut use_pnpm = false;
|
||||
let mut use_yarn = false;
|
||||
let mut use_bun = false;
|
||||
|
||||
if let Ok(entries) = std::fs::read_dir(path) {
|
||||
for entry in entries.flatten() {
|
||||
|
@ -48,11 +49,13 @@ impl PackageManager {
|
|||
use_pnpm = true;
|
||||
} else if name.as_ref() == "yarn.lock" {
|
||||
use_yarn = true;
|
||||
} else if name.as_ref() == "bun.lockb" {
|
||||
use_bun = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if !use_npm && !use_pnpm && !use_yarn {
|
||||
if !use_npm && !use_pnpm && !use_yarn && !use_bun {
|
||||
return Vec::new();
|
||||
}
|
||||
|
||||
|
@ -67,6 +70,9 @@ impl PackageManager {
|
|||
if use_yarn {
|
||||
found.push(PackageManager::Yarn);
|
||||
}
|
||||
if use_bun {
|
||||
found.push(PackageManager::Bun);
|
||||
}
|
||||
|
||||
found
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
use crate::{
|
||||
helpers::{
|
||||
framework::{infer_from_package_json as infer_framework, Framework},
|
||||
npm::PackageManager,
|
||||
prompts, resolve_tauri_path, template,
|
||||
},
|
||||
VersionMetadata,
|
||||
|
@ -130,13 +131,18 @@ impl Options {
|
|||
)
|
||||
})?;
|
||||
|
||||
let detected_package_manager = match PackageManager::from_project(&self.directory).first() {
|
||||
Some(&package_manager) => package_manager,
|
||||
None => PackageManager::Npm,
|
||||
};
|
||||
|
||||
self.before_dev_command = self
|
||||
.before_dev_command
|
||||
.map(|s| Ok(Some(s)))
|
||||
.unwrap_or_else(|| {
|
||||
prompts::input(
|
||||
"What is your frontend dev command?",
|
||||
Some("npm run dev".to_string()),
|
||||
Some(default_dev_command(detected_package_manager).into()),
|
||||
self.ci,
|
||||
true,
|
||||
)
|
||||
|
@ -148,7 +154,7 @@ impl Options {
|
|||
.unwrap_or_else(|| {
|
||||
prompts::input(
|
||||
"What is your frontend build command?",
|
||||
Some("npm run build".to_string()),
|
||||
Some(default_build_command(detected_package_manager).into()),
|
||||
self.ci,
|
||||
true,
|
||||
)
|
||||
|
@ -158,6 +164,26 @@ impl Options {
|
|||
}
|
||||
}
|
||||
|
||||
fn default_dev_command(pm: PackageManager) -> &'static str {
|
||||
match pm {
|
||||
PackageManager::Yarn => "yarn dev",
|
||||
PackageManager::YarnBerry => "yarn dev",
|
||||
PackageManager::Npm => "npm run dev",
|
||||
PackageManager::Pnpm => "pnpm dev",
|
||||
PackageManager::Bun => "bun dev",
|
||||
}
|
||||
}
|
||||
|
||||
fn default_build_command(pm: PackageManager) -> &'static str {
|
||||
match pm {
|
||||
PackageManager::Yarn => "yarn build",
|
||||
PackageManager::YarnBerry => "yarn build",
|
||||
PackageManager::Npm => "npm run build",
|
||||
PackageManager::Pnpm => "pnpm build",
|
||||
PackageManager::Bun => "bun build",
|
||||
}
|
||||
}
|
||||
|
||||
pub fn command(mut options: Options) -> Result<()> {
|
||||
options = options.load()?;
|
||||
|
||||
|
|
Loading…
Reference in New Issue