You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wiki/server/modules/extensions/puppeteer/ext.js

39 lines
1.1 KiB

const os = require('os')
const path = require('path')
const util = require('util')
const exec = util.promisify(require('child_process').exec)
const fs = require('fs-extra')
module.exports = {
key: 'puppeteer',
title: 'Puppeteer',
description: 'Headless chromium browser for server-side rendering. Required for generating PDF versions of pages and render content elements on the server (e.g. Mermaid diagrams)',
async isCompatible () {
return os.arch() === 'x64'
},
isInstalled: false,
isInstallable: true,
async check () {
try {
this.isInstalled = await fs.pathExists(path.join(process.cwd(), 'node_modules/puppeteer-core/.local-chromium'))
} catch (err) {
this.isInstalled = false
}
return this.isInstalled
},
async install () {
try {
const { stdout, stderr } = await exec('node install.js', {
cwd: path.join(process.cwd(), 'node_modules/puppeteer-core'),
timeout: 300000,
windowsHide: true
})
this.isInstalled = true
WIKI.logger.info(stdout)
WIKI.logger.warn(stderr)
} catch (err) {
WIKI.logger.error(err)
}
}
}