netlify-cli 8.7.0 → 8.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "netlify-cli",
3
- "version": "8.7.0",
3
+ "version": "8.8.0",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "netlify-cli",
9
- "version": "8.7.0",
9
+ "version": "8.8.0",
10
10
  "hasInstallScript": true,
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
13
  "@netlify/build": "^26.1.1",
14
14
  "@netlify/config": "^17.0.3",
15
- "@netlify/framework-info": "^8.0.0",
15
+ "@netlify/framework-info": "^8.0.1",
16
16
  "@netlify/local-functions-proxy": "^1.1.1",
17
17
  "@netlify/plugin-edge-handlers": "^3.0.2",
18
18
  "@netlify/plugins-list": "^6.2.1",
@@ -3037,9 +3037,9 @@
3037
3037
  }
3038
3038
  },
3039
3039
  "node_modules/@netlify/framework-info": {
3040
- "version": "8.0.0",
3041
- "resolved": "https://registry.npmjs.org/@netlify/framework-info/-/framework-info-8.0.0.tgz",
3042
- "integrity": "sha512-8kU0+1civXPehsOcHY9DzAAFWmovkPQFt4W+Z2J86MojER5BXk6PTXhEHNcmgPSYoTejcA7vQ0nAPFErzt5gkA==",
3040
+ "version": "8.0.1",
3041
+ "resolved": "https://registry.npmjs.org/@netlify/framework-info/-/framework-info-8.0.1.tgz",
3042
+ "integrity": "sha512-fEvnNMPTFrjHui43UVsljopAmkB4TdY3ewtL1oKhBeiIW+QjN9EexrmkosFJznjLPb/SzS9i3hkd24ae1lVPEg==",
3043
3043
  "dependencies": {
3044
3044
  "ajv": "^8.0.0",
3045
3045
  "filter-obj": "^2.0.1",
@@ -22101,9 +22101,9 @@
22101
22101
  }
22102
22102
  },
22103
22103
  "@netlify/framework-info": {
22104
- "version": "8.0.0",
22105
- "resolved": "https://registry.npmjs.org/@netlify/framework-info/-/framework-info-8.0.0.tgz",
22106
- "integrity": "sha512-8kU0+1civXPehsOcHY9DzAAFWmovkPQFt4W+Z2J86MojER5BXk6PTXhEHNcmgPSYoTejcA7vQ0nAPFErzt5gkA==",
22104
+ "version": "8.0.1",
22105
+ "resolved": "https://registry.npmjs.org/@netlify/framework-info/-/framework-info-8.0.1.tgz",
22106
+ "integrity": "sha512-fEvnNMPTFrjHui43UVsljopAmkB4TdY3ewtL1oKhBeiIW+QjN9EexrmkosFJznjLPb/SzS9i3hkd24ae1lVPEg==",
22107
22107
  "requires": {
22108
22108
  "ajv": "^8.0.0",
22109
22109
  "filter-obj": "^2.0.1",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "netlify-cli",
3
3
  "description": "Netlify command line tool",
4
- "version": "8.7.0",
4
+ "version": "8.8.0",
5
5
  "author": "Netlify Inc.",
6
6
  "contributors": [
7
7
  "Mathias Biilmann <matt@netlify.com> (https://twitter.com/biilmann)",
@@ -80,7 +80,7 @@
80
80
  "dependencies": {
81
81
  "@netlify/build": "^26.1.1",
82
82
  "@netlify/config": "^17.0.3",
83
- "@netlify/framework-info": "^8.0.0",
83
+ "@netlify/framework-info": "^8.0.1",
84
84
  "@netlify/local-functions-proxy": "^1.1.1",
85
85
  "@netlify/plugin-edge-handlers": "^3.0.2",
86
86
  "@netlify/plugins-list": "^6.2.1",
@@ -100,6 +100,16 @@ const getDefaultDist = () => {
100
100
  return process.cwd()
101
101
  }
102
102
 
103
+ const getStaticServerPort = async ({ devConfig }) => {
104
+ const port = await acquirePort({
105
+ configuredPort: devConfig.staticServerPort,
106
+ defaultPort: DEFAULT_STATIC_PORT,
107
+ errorMessage: 'Could not acquire configured static server port',
108
+ })
109
+
110
+ return port
111
+ }
112
+
103
113
  /**
104
114
  *
105
115
  * @param {object} param0
@@ -132,11 +142,7 @@ const handleStaticServer = async ({ devConfig, options, projectDir }) => {
132
142
  const dist = options.dir || devConfig.publish || getDefaultDist()
133
143
  log(`${NETLIFYDEVWARN} Running static server from "${path.relative(path.dirname(projectDir), dist)}"`)
134
144
 
135
- const frameworkPort = await acquirePort({
136
- configuredPort: devConfig.staticServerPort,
137
- defaultPort: DEFAULT_STATIC_PORT,
138
- errorMessage: 'Could not acquire configured static server port',
139
- })
145
+ const frameworkPort = await getStaticServerPort({ devConfig })
140
146
  return {
141
147
  ...(devConfig.command && { command: devConfig.command }),
142
148
  useStaticServer: true,
@@ -156,7 +162,7 @@ const getSettingsFromFramework = (framework) => {
156
162
  dev: {
157
163
  commands: [command],
158
164
  port: frameworkPort,
159
- pollingStrategies,
165
+ pollingStrategies = [],
160
166
  },
161
167
  name: frameworkName,
162
168
  staticAssetsDirectory: staticDir,
@@ -238,6 +244,31 @@ const handleCustomFramework = ({ devConfig }) => {
238
244
  }
239
245
  }
240
246
 
247
+ const mergeSettings = async ({ devConfig, frameworkSettings = {} }) => {
248
+ const {
249
+ command: frameworkCommand,
250
+ frameworkPort: frameworkDetectedPort,
251
+ dist,
252
+ framework,
253
+ env,
254
+ pollingStrategies = [],
255
+ } = frameworkSettings
256
+
257
+ const command = devConfig.command || frameworkCommand
258
+ const frameworkPort = devConfig.targetPort || frameworkDetectedPort
259
+ // if the framework doesn't start a server, we use a static one
260
+ const useStaticServer = !(command && frameworkPort)
261
+ return {
262
+ command,
263
+ frameworkPort: useStaticServer ? await getStaticServerPort({ devConfig }) : frameworkPort,
264
+ dist: devConfig.publish || dist || getDefaultDist(),
265
+ framework,
266
+ env,
267
+ pollingStrategies,
268
+ useStaticServer,
269
+ }
270
+ }
271
+
241
272
  /**
242
273
  * Handles a forced framework and retrieves the settings for it
243
274
  * @param {*} param0
@@ -245,17 +276,8 @@ const handleCustomFramework = ({ devConfig }) => {
245
276
  */
246
277
  const handleForcedFramework = async ({ devConfig, projectDir }) => {
247
278
  // this throws if `devConfig.framework` is not a supported framework
248
- const { command, dist, env, framework, frameworkPort, pollingStrategies } = getSettingsFromFramework(
249
- await getFramework(devConfig.framework, { projectDir }),
250
- )
251
- return {
252
- command: devConfig.command || command,
253
- frameworkPort: devConfig.targetPort || frameworkPort,
254
- dist: devConfig.publish || dist,
255
- framework,
256
- env,
257
- pollingStrategies,
258
- }
279
+ const frameworkSettings = getSettingsFromFramework(await getFramework(devConfig.framework, { projectDir }))
280
+ return mergeSettings({ devConfig, frameworkSettings })
259
281
  }
260
282
 
261
283
  /**
@@ -285,15 +307,7 @@ const detectServerSettings = async (devConfig, options, projectDir) => {
285
307
  settings = await handleStaticServer({ options, devConfig, projectDir })
286
308
  } else {
287
309
  validateFrameworkConfig({ devConfig })
288
- const { command, frameworkPort, dist, framework, env, pollingStrategies = [] } = frameworkSettings || {}
289
- settings = {
290
- command: devConfig.command || command,
291
- frameworkPort: devConfig.targetPort || frameworkPort,
292
- dist: devConfig.publish || dist || getDefaultDist(),
293
- framework,
294
- env,
295
- pollingStrategies,
296
- }
310
+ settings = await mergeSettings({ devConfig, frameworkSettings })
297
311
  }
298
312
  } else if (devConfig.framework === '#custom') {
299
313
  validateFrameworkConfig({ devConfig })