Skip to content

Commit ae49f91

Browse files
committed
fix: copy-assets was skipping .ts files in asset directories
1 parent fd0af9c commit ae49f91

File tree

2 files changed

+54
-1
lines changed

2 files changed

+54
-1
lines changed

packages/create/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"types": "./dist/types/index.d.ts",
88
"scripts": {
99
"build": "tsc && npm run copy-assets",
10-
"copy-assets": "node -e \"const fs=require('fs');const path=require('path');function copyDir(src,dest){if(!fs.existsSync(dest))fs.mkdirSync(dest,{recursive:true});for(const entry of fs.readdirSync(src,{withFileTypes:true})){const srcPath=path.join(src,entry.name);const destPath=path.join(dest,entry.name);if(entry.isDirectory())copyDir(srcPath,destPath);else if(!entry.name.endsWith('.ts')||entry.name.endsWith('.d.ts'))fs.copyFileSync(srcPath,destPath)}}['react','solid'].forEach(fw=>{['add-ons','toolchains','hosts','examples','project'].forEach(dir=>{const src='src/frameworks/'+fw+'/'+dir;const dest='dist/frameworks/'+fw+'/'+dir;if(fs.existsSync(src))copyDir(src,dest)})})\"",
10+
"copy-assets": "node -e \"const fs=require('fs');const path=require('path');function copyDir(src,dest){if(!fs.existsSync(dest))fs.mkdirSync(dest,{recursive:true});for(const entry of fs.readdirSync(src,{withFileTypes:true})){const srcPath=path.join(src,entry.name);const destPath=path.join(dest,entry.name);if(entry.isDirectory())copyDir(srcPath,destPath);else fs.copyFileSync(srcPath,destPath)}}['react','solid'].forEach(fw=>{['add-ons','toolchains','hosts','examples','project'].forEach(dir=>{const src='src/frameworks/'+fw+'/'+dir;const dest='dist/frameworks/'+fw+'/'+dir;if(fs.existsSync(src))copyDir(src,dest)})})\"",
1111
"dev": "tsc --watch",
1212
"test": "eslint ./src && vitest run",
1313
"test:watch": "vitest",
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { existsSync } from 'node:fs'
2+
import { resolve, dirname } from 'node:path'
3+
import { fileURLToPath } from 'node:url'
4+
import { describe, expect, it } from 'vitest'
5+
6+
const __dirname = dirname(fileURLToPath(import.meta.url))
7+
const distDir = resolve(__dirname, '../dist')
8+
9+
describe('copy-assets', () => {
10+
it('should copy .ts asset files to dist', () => {
11+
// Regression test: .ts files in assets directories must be copied
12+
// See: https://github.com/TanStack/cli/issues/XXX
13+
const tsAssetFiles = [
14+
'frameworks/react/add-ons/t3env/assets/src/env.ts',
15+
'frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/init.ts',
16+
'frameworks/solid/add-ons/convex/assets/convex/schema.ts',
17+
]
18+
19+
for (const file of tsAssetFiles) {
20+
const fullPath = resolve(distDir, file)
21+
expect(existsSync(fullPath), `Expected ${file} to exist in dist`).toBe(
22+
true,
23+
)
24+
}
25+
})
26+
27+
it('should copy .tsx asset files to dist', () => {
28+
const tsxAssetFiles = [
29+
'frameworks/react/add-ons/tRPC/assets/src/routes/demo/trpc-todo.tsx',
30+
'frameworks/solid/add-ons/convex/assets/src/routes/demo/convex.tsx',
31+
]
32+
33+
for (const file of tsxAssetFiles) {
34+
const fullPath = resolve(distDir, file)
35+
expect(existsSync(fullPath), `Expected ${file} to exist in dist`).toBe(
36+
true,
37+
)
38+
}
39+
})
40+
41+
it('should copy .d.ts files to dist', () => {
42+
const dtsFiles = [
43+
'frameworks/react/add-ons/convex/assets/convex/_generated/api.d.ts',
44+
]
45+
46+
for (const file of dtsFiles) {
47+
const fullPath = resolve(distDir, file)
48+
expect(existsSync(fullPath), `Expected ${file} to exist in dist`).toBe(
49+
true,
50+
)
51+
}
52+
})
53+
})

0 commit comments

Comments
 (0)