Compare commits
10 Commits
create-pay
...
v0.5.0-bet
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9b58915aff | ||
|
|
c1daeb3432 | ||
|
|
ff8acde322 | ||
|
|
1bade389e4 | ||
|
|
489de652a3 | ||
|
|
166b06e5d8 | ||
|
|
ed143c7a67 | ||
|
|
b29e2ae685 | ||
|
|
9bafc0fcbf | ||
|
|
b3db078a5f |
@@ -37,7 +37,7 @@
|
||||
"prompts": "^2.4.2",
|
||||
"terminal-link": "^2.1.1"
|
||||
},
|
||||
"version": "0.5.2",
|
||||
"version": "0.5.0-beta.0",
|
||||
"devDependencies": {
|
||||
"@types/command-exists": "^1.2.0",
|
||||
"@types/degit": "^2.8.3",
|
||||
|
||||
@@ -3,7 +3,7 @@ import path from 'path'
|
||||
|
||||
import type { DbDetails } from '../types'
|
||||
import { warning } from '../utils/log'
|
||||
import { bundlerPackages, dbPackages, editorPackages } from './packages'
|
||||
import { bundlerPackages, dbPackages } from './packages'
|
||||
|
||||
/** Update payload config with necessary imports and adapters */
|
||||
export async function configurePayloadConfig(args: {
|
||||
@@ -19,22 +19,11 @@ export async function configurePayloadConfig(args: {
|
||||
try {
|
||||
const packageObj = await fse.readJson(packageJsonPath)
|
||||
|
||||
packageObj.dependencies['payload'] = '^2.0.0'
|
||||
|
||||
const dbPackage = dbPackages[args.dbDetails.type]
|
||||
const bundlerPackage = bundlerPackages['webpack']
|
||||
const editorPackage = editorPackages['slate']
|
||||
|
||||
// Delete all other db adapters
|
||||
Object.values(dbPackages).forEach(p => {
|
||||
if (p.packageName !== dbPackage.packageName) {
|
||||
delete packageObj.dependencies[p.packageName]
|
||||
}
|
||||
})
|
||||
|
||||
packageObj.dependencies[dbPackage.packageName] = dbPackage.version
|
||||
packageObj.dependencies[bundlerPackage.packageName] = bundlerPackage.version
|
||||
packageObj.dependencies[editorPackage.packageName] = editorPackage.version
|
||||
packageObj.dependencies[dbPackage.packageName] = 'latest'
|
||||
packageObj.dependencies[bundlerPackage.packageName] = 'latest'
|
||||
|
||||
await fse.writeJson(packageJsonPath, packageObj, { spaces: 2 })
|
||||
} catch (err: unknown) {
|
||||
@@ -65,7 +54,6 @@ export async function configurePayloadConfig(args: {
|
||||
|
||||
const dbReplacement = dbPackages[args.dbDetails.type]
|
||||
const bundlerReplacement = bundlerPackages['webpack']
|
||||
const editorReplacement = editorPackages['slate']
|
||||
|
||||
let dbConfigStartLineIndex: number | undefined
|
||||
let dbConfigEndLineIndex: number | undefined
|
||||
@@ -82,14 +70,6 @@ export async function configurePayloadConfig(args: {
|
||||
configLines[i] = bundlerReplacement.configReplacement
|
||||
}
|
||||
|
||||
if (l.includes('// editor-import')) {
|
||||
configLines[i] = editorReplacement.importReplacement
|
||||
}
|
||||
|
||||
if (l.includes('// editor-config')) {
|
||||
configLines[i] = editorReplacement.configReplacement
|
||||
}
|
||||
|
||||
if (l.includes('// database-adapter-config-start')) {
|
||||
dbConfigStartLineIndex = i
|
||||
}
|
||||
|
||||
@@ -2,8 +2,7 @@ import fse from 'fs-extra'
|
||||
import path from 'path'
|
||||
import type { BundlerType, CliArgs, DbType, ProjectTemplate } from '../types'
|
||||
import { createProject } from './create-project'
|
||||
import { bundlerPackages, dbPackages, editorPackages } from './packages'
|
||||
import exp from 'constants'
|
||||
import { bundlerPackages, dbPackages } from './packages'
|
||||
|
||||
const projectDir = path.resolve(__dirname, './tmp')
|
||||
describe('createProject', () => {
|
||||
@@ -86,7 +85,7 @@ describe('createProject', () => {
|
||||
const template: ProjectTemplate = {
|
||||
name: 'blank',
|
||||
type: 'starter',
|
||||
url: 'https://github.com/payloadcms/payload/templates/blank',
|
||||
url: 'https://github.com/payloadcms/payload/templates/blank#2.0',
|
||||
description: 'Blank Template',
|
||||
}
|
||||
await createProject({
|
||||
@@ -103,30 +102,15 @@ describe('createProject', () => {
|
||||
|
||||
const dbReplacement = dbPackages[db as DbType]
|
||||
const bundlerReplacement = bundlerPackages[bundler as BundlerType]
|
||||
const editorReplacement = editorPackages['slate']
|
||||
|
||||
const packageJsonPath = path.resolve(projectDir, 'package.json')
|
||||
const packageJson = fse.readJsonSync(packageJsonPath)
|
||||
|
||||
// Check deps
|
||||
expect(packageJson.dependencies['payload']).toEqual('^2.0.0')
|
||||
expect(packageJson.dependencies[dbReplacement.packageName]).toEqual(
|
||||
dbReplacement.version,
|
||||
)
|
||||
|
||||
// Should only have one db adapter
|
||||
expect(packageJson.dependencies[dbReplacement.packageName]).toBeDefined()
|
||||
expect(
|
||||
Object.keys(packageJson.dependencies).filter(n =>
|
||||
n.startsWith('@payloadcms/db-'),
|
||||
),
|
||||
).toHaveLength(1)
|
||||
|
||||
expect(packageJson.dependencies[bundlerReplacement.packageName]).toEqual(
|
||||
bundlerReplacement.version,
|
||||
)
|
||||
expect(packageJson.dependencies[editorReplacement.packageName]).toEqual(
|
||||
editorReplacement.version,
|
||||
)
|
||||
packageJson.dependencies[bundlerReplacement.packageName],
|
||||
).toBeDefined()
|
||||
|
||||
const payloadConfigPath = path.resolve(projectDir, 'src/payload.config.ts')
|
||||
const content = fse.readFileSync(payloadConfigPath, 'utf-8')
|
||||
@@ -147,9 +131,4 @@ describe('createProject', () => {
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('Templates', () => {
|
||||
it.todo('Verify that all templates are valid')
|
||||
// Loop through all templates.ts that should have replacement comments, and verify that they are present
|
||||
})
|
||||
})
|
||||
@@ -1,24 +1,15 @@
|
||||
import type { BundlerType, DbType, EditorType } from '../types'
|
||||
import type { BundlerType, DbType } from '../types'
|
||||
|
||||
type DbAdapterReplacement = {
|
||||
packageName: string
|
||||
importReplacement: string
|
||||
configReplacement: string[]
|
||||
version: string
|
||||
}
|
||||
|
||||
type BundlerReplacement = {
|
||||
packageName: string
|
||||
importReplacement: string
|
||||
configReplacement: string
|
||||
version: string
|
||||
}
|
||||
|
||||
type EditorReplacement = {
|
||||
packageName: string
|
||||
importReplacement: string
|
||||
configReplacement: string
|
||||
version: string
|
||||
}
|
||||
|
||||
const mongodbReplacement: DbAdapterReplacement = {
|
||||
@@ -30,59 +21,39 @@ const mongodbReplacement: DbAdapterReplacement = {
|
||||
' url: process.env.DATABASE_URI,',
|
||||
' }),',
|
||||
],
|
||||
version: '^1.0.0',
|
||||
}
|
||||
|
||||
const postgresReplacement: DbAdapterReplacement = {
|
||||
packageName: '@payloadcms/db-postgres',
|
||||
importReplacement: "import { postgresAdapter } from '@payloadcms/db-postgres'",
|
||||
const postgresqlReplacement: DbAdapterReplacement = {
|
||||
packageName: '@payloadcms/db-postgresql',
|
||||
importReplacement: "import { postgresqlAdapter } from '@payloadcms/db-postgresql'",
|
||||
configReplacement: [
|
||||
' db: postgresAdapter({',
|
||||
' pool: {',
|
||||
' db: postgresqlAdapter({',
|
||||
' client: {',
|
||||
' connectionString: process.env.DATABASE_URI,',
|
||||
' },',
|
||||
' }),',
|
||||
],
|
||||
version: '^0.x', // up to, not including 1.0.0
|
||||
}
|
||||
|
||||
export const dbPackages: Record<DbType, DbAdapterReplacement> = {
|
||||
mongodb: mongodbReplacement,
|
||||
postgres: postgresReplacement,
|
||||
postgres: postgresqlReplacement,
|
||||
}
|
||||
|
||||
const webpackReplacement: BundlerReplacement = {
|
||||
packageName: '@payloadcms/bundler-webpack',
|
||||
importReplacement: "import { webpackBundler } from '@payloadcms/bundler-webpack'",
|
||||
// Replacement of line containing `// bundler-config`
|
||||
configReplacement: ' bundler: webpackBundler(),',
|
||||
version: '^1.0.0',
|
||||
configReplacement: ' bundler: webpackBundler(),',
|
||||
}
|
||||
|
||||
const viteReplacement: BundlerReplacement = {
|
||||
packageName: '@payloadcms/bundler-vite',
|
||||
importReplacement: "import { viteBundler } from '@payloadcms/bundler-vite'",
|
||||
configReplacement: ' bundler: viteBundler(),',
|
||||
version: '^0.x', // up to, not including 1.0.0
|
||||
}
|
||||
|
||||
export const bundlerPackages: Record<BundlerType, BundlerReplacement> = {
|
||||
webpack: webpackReplacement,
|
||||
vite: viteReplacement,
|
||||
}
|
||||
|
||||
export const editorPackages: Record<EditorType, EditorReplacement> = {
|
||||
slate: {
|
||||
packageName: '@payloadcms/richtext-slate',
|
||||
importReplacement: "import { slateEditor } from '@payloadcms/richtext-slate'",
|
||||
configReplacement: ' editor: slateEditor({}),',
|
||||
version: '^1.0.0',
|
||||
},
|
||||
lexical: {
|
||||
packageName: '@payloadcms/richtext-lexical',
|
||||
importReplacement:
|
||||
"import { lexicalEditor } from '@payloadcms/richtext-lexical'",
|
||||
configReplacement: ' editor: lexicalEditor({}),',
|
||||
version: '^0.x', // up to, not including 1.0.0
|
||||
},
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ const dbChoiceRecord: Record<DbType, DbChoice> = {
|
||||
},
|
||||
postgres: {
|
||||
value: 'postgres',
|
||||
title: 'PostgreSQL (beta)',
|
||||
title: 'PostgreSQL',
|
||||
dbConnectionPrefix: 'postgres://127.0.0.1:5432/',
|
||||
},
|
||||
}
|
||||
@@ -70,7 +70,7 @@ export async function selectDb(
|
||||
{
|
||||
type: 'text',
|
||||
name: 'value',
|
||||
message: `Enter ${dbChoice.title.split(' ')[0]} connection string`, // strip beta from title
|
||||
message: `Enter ${dbChoice.title} connection string`,
|
||||
initial: `${dbChoice.dbConnectionPrefix}${
|
||||
projectName === '.'
|
||||
? `payload-${getRandomDigitSuffix()}`
|
||||
|
||||
@@ -16,19 +16,19 @@ export async function getValidTemplates(): Promise<ProjectTemplate[]> {
|
||||
{
|
||||
name: 'blank',
|
||||
type: 'starter',
|
||||
url: 'https://github.com/payloadcms/payload/templates/blank',
|
||||
url: 'https://github.com/payloadcms/payload/templates/blank#2.0',
|
||||
description: 'Blank Template',
|
||||
},
|
||||
{
|
||||
name: 'website',
|
||||
type: 'starter',
|
||||
url: 'https://github.com/payloadcms/payload/templates/website',
|
||||
url: 'https://github.com/payloadcms/payload/templates/website#2.0',
|
||||
description: 'Website Template',
|
||||
},
|
||||
{
|
||||
name: 'ecommerce',
|
||||
type: 'starter',
|
||||
url: 'https://github.com/payloadcms/payload/templates/ecommerce',
|
||||
url: 'https://github.com/payloadcms/payload/templates/ecommerce#2.0',
|
||||
description: 'E-commerce Template',
|
||||
},
|
||||
{
|
||||
|
||||
@@ -31,7 +31,6 @@ export class Main {
|
||||
'--dry-run': Boolean,
|
||||
'--beta': Boolean,
|
||||
|
||||
'-d': '--db',
|
||||
'-h': '--help',
|
||||
'-n': '--name',
|
||||
'-t': '--template',
|
||||
|
||||
@@ -55,4 +55,3 @@ export type DbDetails = {
|
||||
}
|
||||
|
||||
export type BundlerType = 'webpack' | 'vite'
|
||||
export type EditorType = 'lexical' | 'slate'
|
||||
|
||||
Reference in New Issue
Block a user