Skip to content

Commit b185bb8

Browse files
committed
[TASK] add package-lock.json to initial commit when to use rh init cmd
1 parent c77eaad commit b185bb8

2 files changed

Lines changed: 32 additions & 3 deletions

File tree

lib/cmd/init.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,14 @@ async function initGithubRepoBasedOnTemplate (data) {
7474
await updateAndCommit(
7575
data.prompts?.githubRepoFromTmpl?.newRepoOwner || '',
7676
data.prompts?.githubRepoFromTmpl?.newRepoName || '',
77-
['package.json', 'theme/theme.json'],
77+
['package.json', 'package-lock.json', 'theme/theme.json'],
7878
{
7979
name: data.prompts?.githubRepoFromTmpl?.newRepoName,
80+
packages: {
81+
'': {
82+
name: data.prompts?.githubRepoFromTmpl?.newRepoName
83+
}
84+
},
8085
label: `${data.prompts?.githubRepoFromTmpl?.newRepoLabel.charAt(0).toUpperCase()}${data.prompts?.githubRepoFromTmpl?.newRepoLabel.slice(1)}`
8186
}
8287
)
@@ -110,11 +115,15 @@ async function initLocalRepoBasedOnTemplate (data) {
110115
await gitAddAll({ cwd: `${data?.cwd.path}/${data.prompts?.localRepoFromTmpl?.newRepoName}` })
111116
await gitCommit('Initial commit', { cwd: `${data?.cwd.path}/${data.prompts?.localRepoFromTmpl?.newRepoName}` })
112117
const packageJson = await parseJson(`${data?.cwd.path}/${data.prompts?.localRepoFromTmpl?.newRepoName}/package.json`)
118+
const packageJsonLock = await parseJson(`${data?.cwd.path}/${data.prompts?.localRepoFromTmpl?.newRepoName}/package-lock.json`)
113119
const themeJson = await parseJson(`${data?.cwd.path}/${data.prompts?.localRepoFromTmpl?.newRepoName}/theme/theme.json`)
114120
packageJson.name = data.prompts?.localRepoFromTmpl?.newRepoName
121+
packageJsonLock.name = data.prompts?.localRepoFromTmpl?.newRepoName
122+
packageJsonLock.packages[''].name = data.prompts?.localRepoFromTmpl?.newRepoName
115123
themeJson.name = data.prompts?.localRepoFromTmpl?.newRepoName
116124
themeJson.label = `${data.prompts?.localRepoFromTmpl?.newRepoLabel.charAt(0).toUpperCase()}${data.prompts?.localRepoFromTmpl?.newRepoLabel.slice(1)}`
117125
await writeJson(`${data?.cwd.path}/${data.prompts?.localRepoFromTmpl?.newRepoName}/package.json`, packageJson)
126+
await writeJson(`${data?.cwd.path}/${data.prompts?.localRepoFromTmpl?.newRepoName}/package-lock.json`, packageJsonLock)
118127
await writeJson(`${data?.cwd.path}/${data.prompts?.localRepoFromTmpl?.newRepoName}/theme/theme.json`, themeJson)
119128
await gitAddAll({ cwd: `${data?.cwd.path}/${data.prompts?.localRepoFromTmpl?.newRepoName}` })
120129
await gitCommit('[TASK] update package.json and theme.json with new project info', { cwd: `${data?.cwd.path}/${data.prompts?.localRepoFromTmpl?.newRepoName}` })

lib/github/commit.js

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,31 @@ async function updateAndCommit (owner, repo, paths, changeValues) {
6161
}
6262
})
6363

64+
// deepMerge function
65+
function deepMerge (/** @type {any} */ target, /** @type {any} */ source) {
66+
Object.keys(source).forEach(key => {
67+
if (source[key] && typeof source[key] === 'object') {
68+
if (!target[key]) {
69+
target[key] = Array.isArray(source[key]) ? [] : {}
70+
}
71+
deepMerge(target[key], source[key])
72+
} else {
73+
target[key] = source[key]
74+
}
75+
})
76+
}
77+
6478
// update the content of the file
6579
const fileData = JSON.parse(Buffer.from(oldContent, 'base64').toString('utf-8'))
6680
Object.keys(changeValues).forEach(key => {
67-
if (fileData[key]) {
68-
fileData[key] = changeValues[key]
81+
if (Object.prototype.hasOwnProperty.call(fileData, key)) {
82+
if (typeof fileData[key] === 'object' && typeof changeValues[key] === 'object' && !Array.isArray(fileData[key]) && !Array.isArray(changeValues[key])) {
83+
// Perform a deep merge
84+
deepMerge(fileData[key], changeValues[key])
85+
} else {
86+
// Directly update the value
87+
fileData[key] = changeValues[key]
88+
}
6989
}
7090
})
7191

0 commit comments

Comments
 (0)