diff --git a/.changes/pkg-manager-based-on-template.md b/.changes/pkg-manager-based-on-template.md
new file mode 100644
index 0000000000..87a5c22a0b
--- /dev/null
+++ b/.changes/pkg-manager-based-on-template.md
@@ -0,0 +1,6 @@
+---
+"create-tauri-app": "patch"
+"create-tauri-app-js": "patch"
+---
+
+Only prompt for supported package managers when using `--template` cli option.
\ No newline at end of file
diff --git a/README.md b/README.md
index a13d02fc7b..fe61c693b4 100644
--- a/README.md
+++ b/README.md
@@ -54,23 +54,23 @@ pnpm create tauri-app
-You can also directly specify the project name and the template you want to use via additional command line options. For example, to scaffold a Vite + Vue project, run:
+You can also directly specify the project name, package manager and the template you want to use via additional command line options. For example, to scaffold a Vue project in a `my-tauri-app` directory, using `pnpm`, run:
```bash
# curl
-sh <(curl https://create.tauri.app/sh) --template svelte
+sh <(curl https://create.tauri.app/sh) my-tauri-app --template svelte --manager pnpm
# wget
-sh <(wget https://create.tauri.app/sh) --template svelte
+sh <(wget https://create.tauri.app/sh) my-tauri-app --template svelte --manager pnpm
# cargo
-cargo create-tauri-app --template svelte
+cargo create-tauri-app my-tauri-app --template svelte --manager pnpm
# npm 6.x
-npm create tauri-app@latest my-tauri-app --template svelte
+npm create tauri-app@latest my-tauri-app --template svelte --manager pnpm
# npm 7+, extra double-dash is needed:
-npm create tauri-app@latest my-tauri-app -- --template svelte
+npm create tauri-app@latest my-tauri-app -- --template svelte --manager pnpm
# yarn
-yarn create tauri-app my-tauri-app --template svelte
+yarn create tauri-app my-tauri-app --template svelte --manager pnpm
# pnpm
-pnpm create tauri-app my-tauri-app --template svelte
+pnpm create tauri-app my-tauri-app --template svelte --manager pnpm
```
Currently supported template presets include:
diff --git a/packages/cli/README.md b/packages/cli/README.md
index ba54f9c472..7d3829f5d0 100644
--- a/packages/cli/README.md
+++ b/packages/cli/README.md
@@ -20,10 +20,10 @@ cargo create-tauri-app
-You can also directly specify the project name and the template you want to use via additional command line options. For example, to scaffold a Vite + Vue project, run:
+You can also directly specify the project name, package manager and the template you want to use via additional command line options. For example, to scaffold a Yew project in a `my-tauri-app` directory, using `cargo`, run:
```bash
-cargo create-tauri-app --template svelte
+cargo create-tauri-app my-tauri-app --template yew --manager cargo
```
Currently supported template presets include:
diff --git a/packages/cli/node/README.md b/packages/cli/node/README.md
index e0b02dfe2d..744fe94f3a 100644
--- a/packages/cli/node/README.md
+++ b/packages/cli/node/README.md
@@ -31,18 +31,18 @@ pnpm create tauri-app
-You can also directly specify the project name and the template you want to use via additional command line options. For example, to scaffold a Vite + Vue project, run:
+You can also directly specify the project name, package manager and the template you want to use via additional command line options. For example, to scaffold a Vue project in a `my-tauri-app` directory, using `pnpm`, run:
```bash
# npm 6.x
-npm create tauri-app@latest my-tauri-app --template svelte
+npm create tauri-app@latest my-tauri-app --template svelte --manager pnpm
# npm 7+, extra double-dash is needed:
-npm create tauri-app@latest my-tauri-app -- --template svelte
+npm create tauri-app@latest my-tauri-app -- --template svelte --manager pnpm
# yarn
-yarn create tauri-app my-tauri-app --template svelte
+yarn create tauri-app my-tauri-app --template svelte --manager pnpm
# pnpm
-pnpm create tauri-app my-tauri-app --template svelte
+pnpm create tauri-app my-tauri-app --template svelte --manager pnpm
```
Currently supported template presets include:
diff --git a/packages/cli/src/lib.rs b/packages/cli/src/lib.rs
index 35bfa19e45..810b352d9f 100644
--- a/packages/cli/src/lib.rs
+++ b/packages/cli/src/lib.rs
@@ -131,14 +131,28 @@ where
if skip {
defaults.manager.unwrap()
} else {
- let managers = PackageManager::ALL;
- let index = Select::with_theme(&ColorfulTheme::default())
- .with_prompt("Choose your package manager")
- .items(managers)
- .default(0)
- .interact()
- .unwrap();
- managers[index]
+ let managers = PackageManager::ALL.to_vec();
+ let managers = args
+ .template
+ .map(|t| {
+ managers
+ .iter()
+ .copied()
+ .filter(|p| p.templates().contains(&t))
+ .collect::>()
+ })
+ .unwrap_or(managers);
+ if managers.len() == 1 {
+ managers[0]
+ } else {
+ let index = Select::with_theme(&ColorfulTheme::default())
+ .with_prompt("Choose your package manager")
+ .items(&managers)
+ .default(0)
+ .interact()
+ .unwrap();
+ managers[index]
+ }
}
});