Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled
301 lines
6.0 KiB
TypeScript
301 lines
6.0 KiB
TypeScript
import path from 'path'
|
|
import {
|
|
SRC_DIR_NAMES,
|
|
TemplateMode,
|
|
TemplateType,
|
|
} from '../../../../packages/create-next-app/templates'
|
|
|
|
export type ProjectSettings = {
|
|
files: string[]
|
|
deps: string[]
|
|
devDeps: string[]
|
|
}
|
|
|
|
export type ProjectSpecification = {
|
|
global: ProjectSettings
|
|
} & {
|
|
[key in TemplateType]: {
|
|
[key in TemplateMode]: ProjectSettings
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Required files for a given project template and mode.
|
|
*/
|
|
export const projectSpecification: ProjectSpecification = {
|
|
global: {
|
|
files: [
|
|
'package.json',
|
|
'eslint.config.mjs',
|
|
'node_modules/next',
|
|
'.gitignore',
|
|
],
|
|
deps: [
|
|
'next',
|
|
'react',
|
|
'react-dom',
|
|
...(process.env.NEXT_RSPACK ? ['next-rspack'] : []),
|
|
],
|
|
devDeps: ['eslint', 'eslint-config-next'],
|
|
},
|
|
default: {
|
|
js: {
|
|
files: [
|
|
'pages/index.js',
|
|
'pages/_app.js',
|
|
'pages/api/hello.js',
|
|
'jsconfig.json',
|
|
],
|
|
deps: [],
|
|
devDeps: [],
|
|
},
|
|
ts: {
|
|
files: [
|
|
'pages/index.tsx',
|
|
'pages/_app.tsx',
|
|
'pages/api/hello.ts',
|
|
'tsconfig.json',
|
|
'next-env.d.ts',
|
|
],
|
|
deps: [],
|
|
devDeps: [
|
|
'@types/node',
|
|
'@types/react',
|
|
'@types/react-dom',
|
|
'typescript',
|
|
],
|
|
},
|
|
},
|
|
'default-empty': {
|
|
js: {
|
|
files: ['pages/index.js', 'pages/_app.js', 'jsconfig.json'],
|
|
deps: [],
|
|
devDeps: [],
|
|
},
|
|
ts: {
|
|
files: [
|
|
'pages/index.tsx',
|
|
'pages/_app.tsx',
|
|
'tsconfig.json',
|
|
'next-env.d.ts',
|
|
],
|
|
deps: [],
|
|
devDeps: [
|
|
'@types/node',
|
|
'@types/react',
|
|
'@types/react-dom',
|
|
'typescript',
|
|
],
|
|
},
|
|
},
|
|
'default-tw': {
|
|
js: {
|
|
files: [
|
|
'jsconfig.json',
|
|
'pages/_app.js',
|
|
'pages/api/hello.js',
|
|
'pages/index.js',
|
|
'postcss.config.mjs',
|
|
],
|
|
deps: [],
|
|
devDeps: ['@tailwindcss/postcss', 'tailwindcss'],
|
|
},
|
|
ts: {
|
|
files: [
|
|
'next-env.d.ts',
|
|
'pages/_app.tsx',
|
|
'pages/api/hello.ts',
|
|
'pages/index.tsx',
|
|
'postcss.config.mjs',
|
|
'tsconfig.json',
|
|
],
|
|
deps: [],
|
|
devDeps: [
|
|
'@types/node',
|
|
'@types/react-dom',
|
|
'@types/react',
|
|
'@tailwindcss/postcss',
|
|
'tailwindcss',
|
|
'typescript',
|
|
],
|
|
},
|
|
},
|
|
'default-tw-empty': {
|
|
js: {
|
|
files: [
|
|
'jsconfig.json',
|
|
'pages/_app.js',
|
|
'pages/index.js',
|
|
'postcss.config.mjs',
|
|
],
|
|
deps: [],
|
|
devDeps: ['@tailwindcss/postcss', 'tailwindcss'],
|
|
},
|
|
ts: {
|
|
files: [
|
|
'next-env.d.ts',
|
|
'pages/_app.tsx',
|
|
'pages/index.tsx',
|
|
'postcss.config.mjs',
|
|
'tsconfig.json',
|
|
],
|
|
deps: [],
|
|
devDeps: [
|
|
'@types/node',
|
|
'@types/react-dom',
|
|
'@types/react',
|
|
'@tailwindcss/postcss',
|
|
'tailwindcss',
|
|
'typescript',
|
|
],
|
|
},
|
|
},
|
|
app: {
|
|
js: {
|
|
deps: [],
|
|
devDeps: [],
|
|
files: ['app/page.js', 'app/layout.js', 'jsconfig.json'],
|
|
},
|
|
ts: {
|
|
deps: [],
|
|
devDeps: [
|
|
'@types/node',
|
|
'@types/react',
|
|
'@types/react-dom',
|
|
'typescript',
|
|
],
|
|
files: [
|
|
'app/page.tsx',
|
|
'app/layout.tsx',
|
|
'tsconfig.json',
|
|
'next-env.d.ts',
|
|
],
|
|
},
|
|
},
|
|
'app-api': {
|
|
js: {
|
|
deps: ['next', ...(process.env.NEXT_RSPACK ? ['next-rspack'] : [])],
|
|
devDeps: [],
|
|
files: ['app/route.js', 'app/[slug]/route.js', 'jsconfig.json'],
|
|
},
|
|
ts: {
|
|
deps: ['next', ...(process.env.NEXT_RSPACK ? ['next-rspack'] : [])],
|
|
devDeps: ['@types/node', '@types/react', 'typescript'],
|
|
files: [
|
|
'app/route.ts',
|
|
'app/[slug]/route.ts',
|
|
'tsconfig.json',
|
|
'next-env.d.ts',
|
|
],
|
|
},
|
|
},
|
|
'app-empty': {
|
|
js: {
|
|
deps: [],
|
|
devDeps: [],
|
|
files: ['app/page.js', 'app/layout.js', 'jsconfig.json'],
|
|
},
|
|
ts: {
|
|
deps: [],
|
|
devDeps: [
|
|
'@types/node',
|
|
'@types/react',
|
|
'@types/react-dom',
|
|
'typescript',
|
|
],
|
|
files: [
|
|
'app/page.tsx',
|
|
'app/layout.tsx',
|
|
'tsconfig.json',
|
|
'next-env.d.ts',
|
|
],
|
|
},
|
|
},
|
|
'app-tw': {
|
|
js: {
|
|
deps: [],
|
|
devDeps: ['@tailwindcss/postcss', 'tailwindcss'],
|
|
files: [
|
|
'app/layout.js',
|
|
'app/page.js',
|
|
'jsconfig.json',
|
|
'postcss.config.mjs',
|
|
],
|
|
},
|
|
ts: {
|
|
deps: [],
|
|
devDeps: [
|
|
'@types/node',
|
|
'@types/react-dom',
|
|
'@types/react',
|
|
'@tailwindcss/postcss',
|
|
'tailwindcss',
|
|
'typescript',
|
|
],
|
|
files: [
|
|
'app/layout.tsx',
|
|
'app/page.tsx',
|
|
'next-env.d.ts',
|
|
'postcss.config.mjs',
|
|
'tsconfig.json',
|
|
],
|
|
},
|
|
},
|
|
'app-tw-empty': {
|
|
js: {
|
|
deps: [],
|
|
devDeps: ['@tailwindcss/postcss', 'tailwindcss'],
|
|
files: [
|
|
'app/layout.js',
|
|
'app/page.js',
|
|
'jsconfig.json',
|
|
'postcss.config.mjs',
|
|
],
|
|
},
|
|
ts: {
|
|
deps: [],
|
|
devDeps: [
|
|
'@types/node',
|
|
'@types/react-dom',
|
|
'@types/react',
|
|
'@tailwindcss/postcss',
|
|
'tailwindcss',
|
|
'typescript',
|
|
],
|
|
files: [
|
|
'app/layout.tsx',
|
|
'app/page.tsx',
|
|
'next-env.d.ts',
|
|
'postcss.config.mjs',
|
|
'tsconfig.json',
|
|
],
|
|
},
|
|
},
|
|
}
|
|
|
|
export type GetProjectSettingsArgs = {
|
|
template: TemplateType
|
|
mode: TemplateMode
|
|
setting: keyof ProjectSettings
|
|
srcDir?: boolean
|
|
}
|
|
|
|
export const mapSrcFiles = (files: string[], srcDir?: boolean) =>
|
|
files.map((file) =>
|
|
srcDir && SRC_DIR_NAMES.some((name) => file.startsWith(name))
|
|
? path.join('src', file)
|
|
: file
|
|
)
|
|
|
|
export const getProjectSetting = ({
|
|
template,
|
|
mode,
|
|
setting,
|
|
srcDir,
|
|
}: GetProjectSettingsArgs) => {
|
|
return [
|
|
...projectSpecification.global[setting],
|
|
...mapSrcFiles(projectSpecification[template][mode][setting], srcDir),
|
|
]
|
|
}
|