storyblok / storyblok-cli

Storyblok CLI
https://www.npmjs.com/package/storyblok
MIT License
31 stars 30 forks source link

[Feature Request] CLI `pull-components` should include datasource values #48

Open madebyfabian opened 1 year ago

madebyfabian commented 1 year ago

I want to have generated types for my Storyblok components. Since Storyblok doesn't provide such option, I am using https://github.com/dohomi/storyblok-generate-ts with:

$ storyblok pull-components --space=[SPACE_ID]

This mostly works fine. But the issue is that fields which use datasources are not correctly typed. This is due to the fact that the JSON payload from the pull-components command is:

"schema": {
  "versusCategory": {
    "datasource_slug": "versuscategory",
    "...": "..."
  }
},

while it lists the name of the datasource, there is no way for me to see the possible values of it.

I think there is a possibility to get those via the HTTP API, but in my opinion this should be generated within the CLI, without the need of external API requests.

Related issue: https://github.com/dohomi/storyblok-generate-ts/issues/40

ademarCardoso commented 1 year ago

Hi @madebyfabian i liked the idea, and this issue has a lot of 👍🏼 i will open a task to implement this feature in our CLI 😄

jsve commented 1 year ago

I have the same issue. In addition: this limitation (datasources not being pulled on pull-components) limits how useful the push-component functionality is. As indicated here you should be able to push the components to another space. If the components use datasources there is need for a manual step as well, which is undocumented and not ideal.

RKcode commented 6 months ago

Hey @ademarCardoso,

I've opened a PR for this issue. A new CLI option to resolve the linked datasource directly in the options of an single/multiple field.

My PR doesn't really solve @jsve issue. You can still sync --type datasources before push-components, else it will still require a really small manual action if you want to have source: self instead of source: internal (datasources).