用Nuxt/VueJS生成facebook/linkedin网站预览图片截图
Generate facebook/ linkedin website preview image screenshot with Nuxt / VueJS
我们使用 nuxt generate
生成了大约 5,000 个页面。其中许多在 Facebook 和 LinkedIn 上被大量分享。
预先生成这 5,000 页的预览屏幕截图的最佳方法是什么?有专门的脚本或 NPM 包吗?
本质上应该是预先生成截图填充(nuxt.config.js
):
{ property: 'og:image', content: 'https://example.com/social/page-4999-screenshot.png' }
您可以编写一个启动 Nuxt 的 Node 脚本,然后 运行s Puppeteer to grab a screenshot。
例如,以下脚本可以是 运行 和 node ./screenshot.js 8081
。对于所有 5000 页,它可以迭代地修改为 运行。
// screenshot.js
const puppeteer = require('puppeteer');
const nuxt = require('@nuxt/cli');
(async () => {
const port = process.argv[3]
try {
await nuxt.run(['generate'])
await nuxt.run(['dev', '--port', port])
} catch (error) {
console.error(error)
process.exit(2)
}
const browser = await puppeteer.launch()
try {
const page = await browser.newPage()
await page.goto(`http://localhost:${port}`)
await page.screenshot({ path: 'screenshot.png' })
} finally {
await browser.close()
}
// force exit as Nuxt server is still listening...
process.exit(0)
})()
我们使用 nuxt generate
生成了大约 5,000 个页面。其中许多在 Facebook 和 LinkedIn 上被大量分享。
预先生成这 5,000 页的预览屏幕截图的最佳方法是什么?有专门的脚本或 NPM 包吗?
本质上应该是预先生成截图填充(nuxt.config.js
):
{ property: 'og:image', content: 'https://example.com/social/page-4999-screenshot.png' }
您可以编写一个启动 Nuxt 的 Node 脚本,然后 运行s Puppeteer to grab a screenshot。
例如,以下脚本可以是 运行 和 node ./screenshot.js 8081
。对于所有 5000 页,它可以迭代地修改为 运行。
// screenshot.js
const puppeteer = require('puppeteer');
const nuxt = require('@nuxt/cli');
(async () => {
const port = process.argv[3]
try {
await nuxt.run(['generate'])
await nuxt.run(['dev', '--port', port])
} catch (error) {
console.error(error)
process.exit(2)
}
const browser = await puppeteer.launch()
try {
const page = await browser.newPage()
await page.goto(`http://localhost:${port}`)
await page.screenshot({ path: 'screenshot.png' })
} finally {
await browser.close()
}
// force exit as Nuxt server is still listening...
process.exit(0)
})()