Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hutsoninc/gatsby-plugin-csv-feed
Gatsby plugin for creating CSV data feeds.
https://github.com/hutsoninc/gatsby-plugin-csv-feed
ads adwords csv data feed gatsby gatsby-plugin google tsv
Last synced: about 1 month ago
JSON representation
Gatsby plugin for creating CSV data feeds.
- Host: GitHub
- URL: https://github.com/hutsoninc/gatsby-plugin-csv-feed
- Owner: hutsoninc
- License: mit
- Created: 2019-06-14T19:13:12.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-11-11T22:20:14.000Z (about 3 years ago)
- Last Synced: 2024-12-05T02:34:23.412Z (about 2 months ago)
- Topics: ads, adwords, csv, data, feed, gatsby, gatsby-plugin, google, tsv
- Language: JavaScript
- Size: 286 KB
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gatsby-plugin-csv-feed
[![Current npm package version](https://img.shields.io/npm/v/gatsby-plugin-csv-feed.svg)](https://www.npmjs.com/package/gatsby-plugin-csv-feed)
Gatsby plugin for creating CSV feeds. Can be used for creating dynamic Google Data Feeds, Facebook Catalog Feeds, Page Feeds, and feeds for other integrations. Uses [`json2csv`](https://github.com/zemirco/json2csv) to generate CSVs.
## Installing
`npm install --save gatsby-plugin-csv-feed`
## Usage
Here's an example of how to create a [Custom Google Data Feed](https://support.google.com/google-ads/answer/6053288):
```js
// In your gatsby-config.js
module.exports = {
plugins: [
{
resolve: 'gatsby-plugin-csv-feed',
options: {
// Query to pass to all feed serializers (optional)
query: `
{
site {
siteMetadata {
siteUrl
}
}
}
`,
// Options to pass to `json2csv` parser for all feeds (optional)
parserOptions: {},
// Feeds
feeds: [
{
// Individual feed query
query: `
{
allMarkdownRemark {
edges {
node {
frontmatter {
id
title
description
category
keywords
price
image
}
fields {
slug
}
}
}
}
}
`,
serialize: ({ query: { site, allMarkdownRemark } }) => {
return allMarkdownRemark.edges.map(edge => {
const node = Object.assign({}, edge.node.frontmatter, edge.node.fields);
return {
'ID': node.id,
'Item title': node.title,
'Item description': node.description,
'Image URL': `${site.siteMetadata.siteUrl}${node.image}`,
'Price': `${Number(node.price).toLocaleString('en-US')} USD`,
'Item Category': node.category,
'Contextual keywords': node.keywords.join(';'),
'Final URL': `${site.siteMetadata.siteUrl}${node.slug}`,
};
});
},
// Output file
output: '/product-feed.csv',
// Options to pass to `json2csv` parser for this feed (optional)
parserOptions: {},
},
],
},
},
]
}
```### Passing parser options to `json2csv`
Additional options may be passed to `json2csv` via the `parserOptions` field. Pass `parserOptions` to all feeds by adding it to the plugin options object or to an individual feed by adding it to the feed object. Feed `parserOptions` take precedence over plugin `parserOptions`.
To see a list of available options, [view the `JavaScript Module` section of the `json2csv` package](https://github.com/zemirco/json2csv#javascript-module).
## License
MIT © [Hutson Inc](https://www.hutsoninc.com)