Skip to content

Commit 1417348

Browse files
authored
feat: changed watch script in package.json when using rewatch (#93)
1 parent a6bb637 commit 1417348

File tree

4 files changed

+31
-6
lines changed

4 files changed

+31
-6
lines changed

src/ExistingJsProject.res

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ open Node
22

33
module P = ClackPrompts
44

5-
let updatePackageJson = async () =>
5+
let updatePackageJson = async (~versions) =>
66
await JsonUtils.updateJsonFile("package.json", json =>
77
switch json {
88
| Object(config) =>
@@ -15,7 +15,12 @@ let updatePackageJson = async () =>
1515
}
1616
scripts->Dict.set("res:build", String("rescript"))
1717
scripts->Dict.set("res:clean", String("rescript clean"))
18-
scripts->Dict.set("res:dev", String("rescript -w"))
18+
19+
if RescriptVersions.usesRewatch(versions) {
20+
scripts->Dict.set("res:dev", String("rescript watch"))
21+
} else {
22+
scripts->Dict.set("res:dev", String("rescript -w"))
23+
}
1924
| _ => ()
2025
}
2126
)
@@ -101,7 +106,7 @@ let addToExistingProject = async (~projectName) => {
101106
await Fs.Promises.appendFile(gitignorePath, `**/*${suffix}${Os.eol}`)
102107
}
103108

104-
await updatePackageJson()
109+
await updatePackageJson(~versions)
105110
await updateRescriptJson(~projectName, ~sourceDir, ~moduleSystem, ~suffix, ~versions)
106111

107112
if !Fs.existsSync(sourceDirPath) {

src/NewProject.res

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,24 @@ let validateProjectName = projectName =>
1515
None
1616
}
1717

18-
let updatePackageJson = async (~projectName) =>
18+
let updatePackageJson = async (~projectName, ~versions) =>
1919
await JsonUtils.updateJsonFile("package.json", json =>
2020
switch json {
21-
| Object(config) => config->Dict.set("name", String(projectName))
21+
| Object(config) => {
22+
config->Dict.set("name", String(projectName))
23+
24+
let scripts = switch config->Dict.get("scripts") {
25+
| Some(Object(scripts)) => scripts
26+
| _ =>
27+
let scripts = Dict.make()
28+
config->Dict.set("scripts", Object(scripts))
29+
scripts
30+
}
31+
32+
if RescriptVersions.usesRewatch(versions) {
33+
scripts->Dict.set("res:dev", String("rescript watch"))
34+
}
35+
}
2236
| _ => ()
2337
}
2438
)
@@ -69,7 +83,7 @@ let createProject = async (~templateName, ~projectName, ~versions) => {
6983
Process.chdir(projectPath)
7084

7185
await Fs.Promises.rename("_gitignore", ".gitignore")
72-
await updatePackageJson(~projectName)
86+
await updatePackageJson(~projectName, ~versions)
7387
await updateRescriptJson(~projectName, ~versions)
7488

7589
await RescriptVersions.installVersions(versions)

src/RescriptVersions.res

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ module P = ClackPrompts
33
let rescript12VersionRange = ">=12.0.0-alpha.5"
44
let rescriptVersionRange = `11.x.x || ${rescript12VersionRange}`
55
let rescriptCoreVersionRange = ">=1.0.0"
6+
let rescriptRewatchVersionRange = ">=12.0.0-alpha.15"
67

78
type versions = {rescriptVersion: string, rescriptCoreVersion: option<string>}
89

@@ -95,3 +96,6 @@ let installVersions = async ({rescriptVersion, rescriptCoreVersion}) => {
9596

9697
let esmModuleSystemName = ({rescriptVersion}) =>
9798
CompareVersions.compareVersions(rescriptVersion, "11.1.0-rc.8") > 0. ? "esmodule" : "es6"
99+
100+
let usesRewatch = ({rescriptVersion}) =>
101+
CompareVersions.satisfies(rescriptVersion, rescriptRewatchVersionRange)

src/RescriptVersions.resi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ let promptVersions: unit => promise<versions>
55
let installVersions: versions => promise<unit>
66

77
let esmModuleSystemName: versions => string
8+
9+
let usesRewatch: versions => bool

0 commit comments

Comments
 (0)