diff --git a/packages/create/src/frameworks/react/project/base/README.md.ejs b/packages/create/src/frameworks/react/project/base/README.md.ejs index ebdcd6aa..3dc04caa 100644 --- a/packages/create/src/frameworks/react/project/base/README.md.ejs +++ b/packages/create/src/frameworks/react/project/base/README.md.ejs @@ -36,7 +36,7 @@ If you prefer not to use Tailwind CSS: 1. Remove the demo pages in `src/routes/demo/` 2. Replace the Tailwind import in `src/styles.css` with your own styles 3. Remove `tailwindcss()` from the plugins array in `vite.config.ts` -4. Uninstall the packages: `<%= getPackageManagerAddScript('@tailwindcss/vite tailwindcss', true) %>` +4. Uninstall the packages: `<%= getPackageManagerRemoveScript('@tailwindcss/vite tailwindcss') %>` <% if (addOnEnabled.biome || addOnEnabled.eslint) { %> ## Linting & Formatting <% if (addOnEnabled.biome) { %> diff --git a/packages/create/src/frameworks/solid/project/base/README.md.ejs b/packages/create/src/frameworks/solid/project/base/README.md.ejs index c4aabe61..b927f83b 100644 --- a/packages/create/src/frameworks/solid/project/base/README.md.ejs +++ b/packages/create/src/frameworks/solid/project/base/README.md.ejs @@ -28,7 +28,7 @@ If you prefer not to use Tailwind CSS: 1. Remove the demo pages in `src/routes/demo/` 2. Replace the Tailwind import in `src/styles.css` with your own styles 3. Remove `tailwindcss()` from the plugins array in `vite.config.ts` -4. Uninstall the packages: `<%= getPackageManagerAddScript('@tailwindcss/vite tailwindcss', true) %>` +4. Uninstall the packages: `<%= getPackageManagerRemoveScript('@tailwindcss/vite tailwindcss') %>` <% for(const addon of addOns.filter(addon => addon.readme)) { %> <%- addon.readmeIsEjs ? renderTemplate(addon.readme) : addon.readme %> diff --git a/packages/create/src/package-manager.ts b/packages/create/src/package-manager.ts index 59739e7a..d1f6381a 100644 --- a/packages/create/src/package-manager.ts +++ b/packages/create/src/package-manager.ts @@ -88,6 +88,26 @@ export function getPackageManagerInstallCommand( } } +export function getPackageManagerUninstallCommand( + packagerManager: PackageManager, + pkg: string, +) { + switch (packagerManager) { + case 'yarn': + case 'pnpm': + case 'bun': + return { + command: packagerManager, + args: ['remove', pkg], + } + default: + return { + command: packagerManager, + args: ['uninstall', pkg], + } + } +} + export function packageManagerInstall( environment: Environment, cwd: string, diff --git a/packages/create/src/template-file.ts b/packages/create/src/template-file.ts index 520a4d23..f9b31139 100644 --- a/packages/create/src/template-file.ts +++ b/packages/create/src/template-file.ts @@ -7,6 +7,7 @@ import { getPackageManagerExecuteCommand, getPackageManagerInstallCommand, getPackageManagerScriptCommand, + getPackageManagerUninstallCommand, } from './package-manager.js' import { relativePath } from './file-helpers.js' @@ -60,6 +61,11 @@ export function createTemplateFile(environment: Environment, options: Options) { ), ) } + function getPackageManagerRemoveScript(packageName: string) { + return formatCommand( + getPackageManagerUninstallCommand(options.packageManager, packageName), + ) + } function getPackageManagerRunScript( scriptName: string, args: Array = [], @@ -145,6 +151,7 @@ export function createTemplateFile(environment: Environment, options: Options) { routes, getPackageManagerAddScript, + getPackageManagerRemoveScript, getPackageManagerRunScript, getPackageManagerExecuteScript, diff --git a/packages/create/tests/package-manager.test.ts b/packages/create/tests/package-manager.test.ts index a69a48c8..4482730b 100644 --- a/packages/create/tests/package-manager.test.ts +++ b/packages/create/tests/package-manager.test.ts @@ -4,6 +4,7 @@ import { getPackageManagerExecuteCommand, getPackageManagerInstallCommand, getPackageManagerScriptCommand, + getPackageManagerUninstallCommand, translateExecuteCommand, } from '../src/package-manager.js' import { formatCommand } from '../src/utils.js' @@ -154,6 +155,34 @@ describe('getPackageManagerInstallCommand', () => { }) }) +describe('getPackageManagerUninstallCommand', () => { + it('yarn uninstall radix-ui', () => { + expect( + formatCommand(getPackageManagerUninstallCommand('yarn', 'radix-ui')), + ).toBe('yarn remove radix-ui') + }) + it('pnpm uninstall radix-ui', () => { + expect( + formatCommand(getPackageManagerUninstallCommand('pnpm', 'radix-ui')), + ).toBe('pnpm remove radix-ui') + }) + it('bun uninstall radix-ui', () => { + expect( + formatCommand(getPackageManagerUninstallCommand('bun', 'radix-ui')), + ).toBe('bun remove radix-ui') + }) + it('deno uninstall radix-ui', () => { + expect( + formatCommand(getPackageManagerUninstallCommand('deno', 'radix-ui')), + ).toBe('deno uninstall radix-ui') + }) + it('npm uninstall radix-ui', () => { + expect( + formatCommand(getPackageManagerUninstallCommand('npm', 'radix-ui')), + ).toBe('npm uninstall radix-ui') + }) +}) + describe('translateExecuteCommand', () => { it('should translate npx to bunx for bun', () => { expect( diff --git a/packages/create/tests/template-file.test.ts b/packages/create/tests/template-file.test.ts index 3b813016..c6f8b559 100644 --- a/packages/create/tests/template-file.test.ts +++ b/packages/create/tests/template-file.test.ts @@ -165,6 +165,10 @@ describe('createTemplateFile', () => { 'foo-dev.txt.ejs', "<%= getPackageManagerAddScript('foo', true) %>", ) + await templateFile( + 'remove-foo.txt.ejs', + "<%= getPackageManagerRemoveScript('foo') %>", + ) await templateFile( 'run-dev.txt.ejs', "<%= getPackageManagerRunScript('dev') %>", @@ -173,6 +177,7 @@ describe('createTemplateFile', () => { expect(output.files['/test/foo.txt']).toEqual('pnpm add foo') expect(output.files['/test/foo-dev.txt']).toEqual('pnpm add foo --dev') + expect(output.files['/test/remove-foo.txt']).toEqual('pnpm remove foo') expect(output.files['/test/run-dev.txt']).toEqual('pnpm dev') })