問題タブ [netlify-cms]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
yaml - Netlify CMS - データをプロジェクト ルートに保存します (例: `__dirname`)
Gatsby テーマ内で Netlify CMS を使用しています。これが私のプロジェクト構造の例です:
より詳しい情報:
gatsby-theme-example
gatsby -plugin-netlify-cmsを使用し、config.yml
ファイルは次の場所にありますroot/themes/gatsby-theme-example/static/admin/config.yml
gatsby-theme-example
とyarn workspacesexample-theme-site
経由で接続されていますが、完全に開発されたら npmに公開して、ユーザーがパッケージとしてインストールできるようにする予定です。開発テスト目的でのみ使用されます。gatsby-theme-example
example-theme-site
この意味は:
- 実行中
yarn workspace example-theme-site develop
は実行さgatsby develop
れますexample-theme-site
- その後、ユーザーは
http://localhost:8000/admin
Netlify CMS にアクセスしてアクセスできます。ログインすると、Netlify CMS 内にある構成ファイルを使用して読み込まれます。root/themes/gatsby-theme-example/static/admin/config.yml
この後に実行したい次のステップは次のとおりです。
- ユーザーが Netlify CMS にコンテンツを追加する
- 保存/公開すると、この新しいデータは
root/sites/example-theme-site/data
ディレクトリの下に保存されます。
gatsby-theme-example
設定ファイルは にありますが、データを に保存したいので、これは私が苦労している問題ですexample-theme-site
。ハードコーディングせずにルートディレクトリからの相対パスを作成する方法がわかりません。
の下file
またはfolder
にconfig.yml
データを保存する場所を指定できることがわかりましたが、 .yml ファイルであるため、正しいディレクトリを指定するconfig.yml
方法などを使用する方法がわかりません。__dirname
私が確認できる唯一のオプションは、開発中にファイル パス (例: ) をハードコードし、テーマを npm に公開する直前にfile: "../../sites/example-theme-site/data/content.md"
相対的になるように変更することです。node_modules
ここに他のより適切な解決策はありますか?
graphql - GraphQL/Netlify CMS - クエリ フィールドが未定義 (存在しない) の場合にエラーにならない
Netlify CMS で Gatsby を使用しており、ファイル コレクションにオプションのフィールドがいくつかあります。これに関する問題は、GraphQL を使用してこれらのフィールドを取得できないことです。空白のままにするとフィールドが存在しないためです。
たとえば、次のコレクション ファイルがあるとします。
すべてのフィールドはオプションです。ユーザーが の値のみを入力するとしますmain
。これにより、データが次のように保存されます。
light
、dark
およびcontrastText
まったく保存されません-それらは単に完全に除外されます。
GraphQL でデータをクエリするときは、ユーザーが入力したオプション フィールドと空白のままになっているフィールドがわからないため、明らかにすべてのフィールドを確認する必要があります。これは、クエリが次のようになることを意味します。
ユーザーがmain
フィールドにのみ入力した上記の例を使用すると、上記のクエリは としてエラーをスローし、light
フィールドは存在しません。dark
contrastText
これには (フォルダー コレクション タイプではなく) ファイル コレクション タイプを使用しているため、既定値を設定できません。とにかくデフォルト値を設定できたとしても、GraphQL と Yaml は値として受け入れないため、問題ありません。最良の代替手段として、または空の文字列 ( )undefined
のみを受け入れることができます。null
""
null
すべてのフィールド値をまたはに設定して yaml ファイルを手動で保存しても""
、クエリ結果を別の JavaScript オブジェクトと深くマージしているため、追加の問題が発生するため、これは機能しません。
undefined
エラーをスローする代わりに、空白の (欠落している) フィールドごとに GraphQL が返されるようにするか、空白/欠落しているフィールドをまったく返さないようにする必要があります。
これは一般的な問題 (Netlify CMS でのオプション フィールドの処理) のように見えますが、それに関するドキュメントには何もありません。人々はこの問題をどのように処理しますか?