diff --git a/.changes/running-from-deno.md b/.changes/running-from-deno.md new file mode 100644 index 00000000..3395b3c6 --- /dev/null +++ b/.changes/running-from-deno.md @@ -0,0 +1,6 @@ +--- +"create-tauri-app": "patch" +"create-tauri-app-js": "patch" +--- + +Fix running `create-tauri-app` using deno. \ No newline at end of file diff --git a/README.md b/README.md index 37a7a517..08b9ef54 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,12 @@ yarn create tauri-app pnpm create tauri-app ``` +### Deno + +```bash +deno run -A npm:create-tauri-app +``` + ### Bun: ```bash @@ -136,23 +142,25 @@ You can also directly specify the project name, package manager and the template ```bash # curl -sh <(curl https://create.tauri.app/sh) my-tauri-app --template svelte --manager pnpm +sh <(curl https://create.tauri.app/sh) my-tauri-app --template svelte # wget -sh <(wget https://create.tauri.app/sh) my-tauri-app --template svelte --manager pnpm +sh <(wget https://create.tauri.app/sh) my-tauri-app --template svelte # powershell -$env:CTA_ARGS="--template svelte --manager pnpm";irm https://create.tauri.app/ps | iex +$env:CTA_ARGS="--template svelte";irm https://create.tauri.app/ps | iex # cargo -cargo create-tauri-app my-tauri-app --template svelte --manager pnpm +cargo create-tauri-app my-tauri-app --template svelte # npm 6.x -npm create tauri-app@latest my-tauri-app --template svelte --manager pnpm +npm create tauri-app@latest my-tauri-app --template svelte # npm 7+, extra double-dash is needed: -npm create tauri-app@latest my-tauri-app -- --template svelte --manager pnpm +npm create tauri-app@latest my-tauri-app -- --template svelte # yarn -yarn create tauri-app my-tauri-app --template svelte --manager pnpm +yarn create tauri-app my-tauri-app --template svelte # pnpm -pnpm create tauri-app my-tauri-app --template svelte --manager pnpm +pnpm create tauri-app my-tauri-app --template svelte +# deno +deno run -A npm:create-tauri-app --template svelte # Bun -bunx create-tauri-app my-tauri-app --template svelte --manager bun +bunx create-tauri-app my-tauri-app --template svelte ``` Currently supported template presets include: @@ -165,6 +173,8 @@ Currently supported template presets include: - `svelte-ts` - `react` - `react-ts` +- `preact` +- `preact-ts` - `solid` - `solid-ts` - `angular` diff --git a/node/README.md b/node/README.md index d3851d9b..abed4b72 100644 --- a/node/README.md +++ b/node/README.md @@ -29,6 +29,12 @@ yarn create tauri-app pnpm create tauri-app ``` +### Deno + +```bash +deno run -A npm:create-tauri-app +``` + ## Bun: ```bash @@ -41,15 +47,15 @@ You can also directly specify the project name, package manager and the template ```bash # npm 6.x -npm create tauri-app@latest my-tauri-app --template svelte --manager pnpm +npm create tauri-app@latest my-tauri-app --template svelte # npm 7+, extra double-dash is needed: -npm create tauri-app@latest my-tauri-app -- --template svelte --manager pnpm +npm create tauri-app@latest my-tauri-app -- --template svelte # yarn -yarn create tauri-app my-tauri-app --template svelte --manager pnpm +yarn create tauri-app my-tauri-app --template svelte # pnpm -pnpm create tauri-app my-tauri-app --template svelte --manager pnpm +pnpm create tauri-app my-tauri-app --template svelte # Bun -bunx create-tauri-app my-tauri-app --template svelte --manager bun +bunx create-tauri-app my-tauri-app --template svelte ``` Currently supported template presets include: @@ -62,6 +68,8 @@ Currently supported template presets include: - `svelte-ts` - `react` - `react-ts` +- `preact` +- `preact-ts` - `solid` - `solid-ts` - `angular` diff --git a/node/create-tauri-app.js b/node/create-tauri-app.js index 5518e76d..f93ad6dd 100644 --- a/node/create-tauri-app.js +++ b/node/create-tauri-app.js @@ -20,7 +20,7 @@ if (globalThis.navigator?.userAgent?.includes("Deno")) { } // Even if started by a package manager, the binary will be NodeJS or Bun. // Some distribution still use "nodejs" as the binary name. -if (binStem.match(/(nodejs|node|bun)-*([0-9]*)*$/g)) { +else if (binStem.match(/(nodejs|node|bun)-*([0-9]*)*$/g)) { const managerStem = process.env.npm_execpath ? path.parse(process.env.npm_execpath).name.toLowerCase() : null; @@ -52,9 +52,8 @@ if (binStem.match(/(nodejs|node|bun)-*([0-9]*)*$/g)) { } // adapted from https://github.com/vitejs/vite/blob/34826aae015ed16dc9b9096c0f778154ca6981a6/packages/create-vite/src/index.ts#L513 -function pkgManagerFromUserAgent(userAgent) { - if (!userAgent) return undefined; - return userAgent.split(" ")[0]?.split("/")[0]; -} -const pkgManager = pkgManagerFromUserAgent(process.env.npm_config_user_agent); +const userAgent = + process.env.npm_config_user_agent ?? globalThis.navigator?.userAgent; +const pkgManager = userAgent?.split(" ")[0]?.split("/")[0].toLocaleLowerCase(); + cli.run(args, binName, pkgManager);