Skip to content

Commit cacc4b9

Browse files
committed
[FEATURE] check if node_modules exists and install missing packages if needed in CWD
1 parent a72f93f commit cacc4b9

2 files changed

Lines changed: 37 additions & 2 deletions

File tree

lib/init.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import {
55
checkNode,
66
checkIfBinExists,
77
checkIsHubSpotCmsTheme,
8-
checkCliToThemeCompatibility
8+
checkCliToThemeCompatibility,
9+
checkNodeModules
910
} from './utils/check.js'
1011
import { collectLocalData } from './localdata.js'
1112
import { info } from './cmd/info.js'
@@ -88,65 +89,77 @@ async function cliInit () {
8889
// upload files to HubSpot
8990
checkIsHubSpotCmsTheme(data)
9091
checkCliToThemeCompatibility(data, cliPackageJson)
92+
await checkNodeModules(data)
9193
await import('@resultify/hubspot-cms-lib/upload')
9294
break
9395
case 'cleanUpload':
9496
// clean and upload files to HubSpot
9597
checkIsHubSpotCmsTheme(data)
9698
checkCliToThemeCompatibility(data, cliPackageJson)
99+
await checkNodeModules(data)
97100
await import('@resultify/hubspot-cms-lib/cleanUpload')
98101
break
99102
case 'fetch':
100103
// fetch files from HubSpot
101104
checkIsHubSpotCmsTheme(data)
102105
checkCliToThemeCompatibility(data, cliPackageJson)
106+
await await checkNodeModules(data)
103107
await import('@resultify/hubspot-cms-lib/fetch')
104108
break
105109
case 'fetchModules':
106110
// fetch modules from HubSpot
107111
checkIsHubSpotCmsTheme(data)
108112
checkCliToThemeCompatibility(data, cliPackageJson)
113+
await checkNodeModules(data)
109114
await import('@resultify/hubspot-cms-lib/fetchModules')
110115
break
111116
case 'build':
112117
// build the project
113118
checkIsHubSpotCmsTheme(data)
114119
checkCliToThemeCompatibility(data, cliPackageJson)
120+
await checkNodeModules(data)
115121
await import('@resultify/hubspot-cms-lib/build')
116122
break
117123
case 'watch':
118124
// watch the project
119125
checkIsHubSpotCmsTheme(data)
120126
checkCliToThemeCompatibility(data, cliPackageJson)
127+
await checkNodeModules(data)
121128
await import('@resultify/hubspot-cms-lib/watch')
122129
break
123130
case 'validate':
124131
// validate the project
125132
checkIsHubSpotCmsTheme(data)
126133
checkCliToThemeCompatibility(data, cliPackageJson)
134+
await checkNodeModules(data)
127135
await import('@resultify/hubspot-cms-lib/validate')
128136
break
129137
case 'lighthouse':
130138
// run lighthouse
131139
checkIsHubSpotCmsTheme(data)
132140
checkCliToThemeCompatibility(data, cliPackageJson)
141+
await checkNodeModules(data)
133142
await import('@resultify/hubspot-cms-lib/lighthouse')
134143
break
135144
case 'fields':
136145
// compile fields.js to fields.json
137146
checkIsHubSpotCmsTheme(data)
138147
checkCliToThemeCompatibility(data, cliPackageJson)
148+
await checkNodeModules(data)
139149
await import('@resultify/hubspot-cms-lib/fields')
140150
break
141151
case 'fetchDb':
142152
// fetch db from HubSpot
143153
checkIsHubSpotCmsTheme(data)
154+
checkCliToThemeCompatibility(data, cliPackageJson)
155+
await checkNodeModules(data)
144156
await import('@resultify/hubspot-cms-lib/fetchDb')
145157
break
146158
case 'uploadDb':
147159
// upload db to HubSpot
148160
checkIsHubSpotCmsTheme(data)
149161
checkCliToThemeCompatibility(data, cliPackageJson)
162+
await checkNodeModules(data)
150163
await import('@resultify/hubspot-cms-lib/uploadDb')
151164
break
152165
default:

lib/utils/check.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/// <reference path="../types/types.js" />
2+
import { isFileDirExists } from '../utils/fs.js'
23
import semver from 'semver'
34
import { $ } from 'execa'
45
import isOnline from 'is-online'
@@ -247,6 +248,26 @@ function checkCliToThemeCompatibility (data, cliPackageJson) {
247248
}
248249
}
249250

251+
/**
252+
* #### check if node_modules exists and install missing packages if needed
253+
* @async
254+
* @param {LOCALDATA} data - data
255+
* @returns undefined
256+
*/
257+
async function checkNodeModules (data) {
258+
if (!await isFileDirExists(`${data.cwd.path}/node_modules`) && data.package) {
259+
const spinner = ora('Install npm dependencies').start()
260+
try {
261+
await $`npm install`
262+
spinner.succeed()
263+
} catch (error) {
264+
spinner.fail()
265+
console.error(error)
266+
process.exit(1)
267+
}
268+
}
269+
}
270+
250271
export {
251272
checkNode,
252273
checkIfBinExists,
@@ -259,5 +280,6 @@ export {
259280
checkSshPermissions,
260281
checkIsOnline,
261282
checkIsHubSpotCmsTheme,
262-
checkCliToThemeCompatibility
283+
checkCliToThemeCompatibility,
284+
checkNodeModules
263285
}

0 commit comments

Comments
 (0)