-
Notifications
You must be signed in to change notification settings - Fork 194
0.3.0 #356
-
i️ [TLDR] New experimental source and required peer dependency update.
⚠️ Breaking Change: Updated esbuild Dependency
0.3.0 requires use of esbuild 0.17.0. You may need to update peer dependencies if experiencing installation issues.
✨ New Source: Remote Files [experimental]
While still focused on content coming from files, you can begin to explore loading content from files not located in your repository.
This works by syncing content from a remote location into your local workspace, and then behaves similarly to the files source. Contentlayer provides the hook (via a syncFiles property) for syncing the files, but you must write the code that pulls the files in.
Here is simple example with a remote Git repo and documentation.
import { makeSource } from 'contentlayer/source-remote-files' export default makeSource({ syncFiles: () => syncContentFromGit(), contentDirPath: 'remote-content', documentTypes: [Post], disableImportAliasWarning: true, }) const syncContentFromGit = async () => { const syncRun = async () => { const repoAlreadyCloned = false if (repoAlreadyCloned) { // TODO `git clone` the repo } else { // TODO `git pull` the repo } } let wasCancelled = false let syncInterval const syncLoop = async () => { await syncRun() if (wasCancelled) return syncInterval = setTimeout(syncLoop, 1000 * 60) } syncLoop() return () => { wasCancelled = true clearTimeout(syncInterval) } }
✨ New helper functions: defineComputedFields & defineFields
You can now use a defineComputedFields function to leverage the document type, including its static fields. Here's an example:
import { defineDocumentType, defineComputedFields } from 'contentlayer/source-files' const computedFields = defineComputedFields<'Post'>({ upperTitle: { type: 'string', resolve: (doc) => doc.title.toUpperCase(), }, }) const Post = defineDocumentType(() => ({ name: 'Post', filePathPattern: `**/*.md`, fields: { // ... }, computedFields, }))
Other Improvements
mdxOptionsnow always applies default Contentlayer remark plugins.- Fixed a bug that avoids the issue demonstrated in Bumping from 0.2.7 to 0.2.8 breaks with Cannot read properties of undefined (reading 'name') #306 .
- Upgraded dependencies.
This discussion was created from the release 0.3.0.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 1
Replies: 1 comment
-
Will defineComputedFields solve the following problems?
Beta Was this translation helpful? Give feedback.