1
1
import { brandColor , dim } from "@cloudflare/cli/colors" ;
2
+ import { spinner } from "@cloudflare/cli/interactive" ;
2
3
import { runFrameworkGenerator } from "frameworks/index" ;
4
+ import { readFile , writeFile } from "helpers/files" ;
3
5
import { installPackages } from "helpers/packages" ;
4
6
import type { TemplateConfig } from "../../src/templates" ;
5
7
import type { C3Context } from "types" ;
@@ -19,14 +21,37 @@ const generate = async (ctx: C3Context) => {
19
21
20
22
const configure = async ( ) => {
21
23
const packages = [
22
- "@opennextjs/cloudflare@0.3 .x" ,
24
+ "@opennextjs/cloudflare@0.4 .x" ,
23
25
"@cloudflare/workers-types" ,
24
26
] ;
25
27
await installPackages ( packages , {
26
28
dev : true ,
27
29
startText : "Adding the Cloudflare adapter" ,
28
30
doneText : `${ brandColor ( `installed` ) } ${ dim ( packages . join ( ", " ) ) } ` ,
29
31
} ) ;
32
+
33
+ updateNextConfig ( ) ;
34
+ } ;
35
+
36
+ const updateNextConfig = ( ) => {
37
+ const s = spinner ( ) ;
38
+
39
+ const configFile = "next.config.mjs" ;
40
+ s . start ( `Updating \`${ configFile } \`` ) ;
41
+
42
+ const configContent = readFile ( configFile ) ;
43
+
44
+ const updatedConfigFile =
45
+ configContent +
46
+ `
47
+ // added by create cloudflare to enable calling \`getCloudflareContext()\` in \`next dev\`
48
+ import { initOpenNextCloudflareForDev } from '@opennextjs/cloudflare';
49
+ initOpenNextCloudflareForDev();
50
+ ` . replace ( / \n \t * / g, "\n" ) ;
51
+
52
+ writeFile ( configFile , updatedConfigFile ) ;
53
+
54
+ s . stop ( `${ brandColor ( `updated` ) } ${ dim ( `\`${ configFile } \`` ) } ` ) ;
30
55
} ;
31
56
32
57
export default {
0 commit comments