Skip to content

Commit

Permalink
Fix extra plugin handling
Browse files Browse the repository at this point in the history
  • Loading branch information
ascorbic committed Nov 12, 2020
1 parent 240a33f commit e7e64cb
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 18 deletions.
31 changes: 19 additions & 12 deletions packages/create-gatsby/src/index.ts
Expand Up @@ -169,11 +169,12 @@ ${center(c.blueBright.bold.underline(`Welcome to Gatsby!`))}
cmses[data.cms].message
)}`
)
plugins.push(data.cms)
const extraPlugins = cmses[data.cms].plugins || []
plugins.push(data.cms, ...extraPlugins)
packages.push(
data.cms,
...(cmses[data.cms].dependencies || []),
...(cmses[data.cms].plugins || [])
...extraPlugins
)
pluginConfig = { ...pluginConfig, ...cmses[data.cms].options }
}
Expand All @@ -184,11 +185,13 @@ ${center(c.blueBright.bold.underline(`Welcome to Gatsby!`))}
styles[data.styling].message
)} for styling your site`
)
plugins.push(data.styling)
const extraPlugins = styles[data.styling].plugins || []

plugins.push(data.styling, ...extraPlugins)
packages.push(
data.styling,
...(styles[data.styling].dependencies || []),
...(styles[data.styling].plugins || [])
...extraPlugins
)
pluginConfig = { ...pluginConfig, ...styles[data.styling].options }
}
Expand All @@ -200,12 +203,16 @@ ${center(c.blueBright.bold.underline(`Welcome to Gatsby!`))}
.join(`, `)}`
)
plugins.push(...data.features)
const featureDependencies = data.features?.map(featureKey => [
// Spread in extra dependencies
...(features[featureKey].dependencies || []),
// Spread in plugins, stripping the optional key
...(features[featureKey].plugins || []),
])
const featureDependencies = data.features?.map(featureKey => {
const extraPlugins = features[featureKey].plugins || []
plugins.push(...extraPlugins)
return [
// Spread in extra dependencies
...(features[featureKey].dependencies || []),
// Spread in plugins, stripping the optional key
...extraPlugins,
]
})
const flattenedDependencies = ([] as Array<string>).concat.apply(
[],
featureDependencies
Expand Down Expand Up @@ -249,10 +256,10 @@ ${c.bold(`Thanks! Here's what we'll now do:`)}
return
}

await initStarter(DEFAULT_STARTER, data.project, packages)
await initStarter(DEFAULT_STARTER, data.project, packages.map(removeKey))

console.log(c.green(`✔ `) + `Created site in ` + c.green(data.project))

console.log({ plugins, pluginConfig })
if (plugins.length) {
console.log(c.bold(`🔌 Installing plugins...`))
await installPlugins(plugins, pluginConfig, path.resolve(data.project), [])
Expand Down
2 changes: 1 addition & 1 deletion packages/create-gatsby/src/plugin-options-form.ts
Expand Up @@ -56,7 +56,7 @@ export const makePluginConfigQuestions = (

selectedPlugins.forEach((pluginName: string): void => {
const schema = pluginSchemas[pluginName as PluginName]
if (typeof schema === `string` || !(`keys` in schema)) {
if (!schema || typeof schema === `string` || !(`keys` in schema)) {
return
}
const options: Record<string, Schema> | undefined = schema?.keys
Expand Down
10 changes: 5 additions & 5 deletions packages/gatsby-cli/src/plugin-add.ts
Expand Up @@ -37,19 +37,19 @@ async function installPluginConfig(
options: Record<string, unknown> | undefined,
root: string
): Promise<void> {
const installTimer = reporter.activityTimer(
`Adding ${plugin} to gatsby-config`
)

// Plugins can optionally include a key, to allow duplicates
const [pluginName, pluginKey] = plugin.split(`:`)

const installTimer = reporter.activityTimer(
`Adding ${pluginName} to gatsby-config`
)

installTimer.start()
reporter.info(`Adding ${pluginName}`)
try {
const result = await GatsbyPlugin.create(
{ root },
{ name: plugin, options, key: pluginKey }
{ name: pluginName, options, key: pluginKey }
)
reporter.info(result._message)
} catch (err) {
Expand Down

0 comments on commit e7e64cb

Please sign in to comment.