You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
/* eslint-disable global-require */
|
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
const { execSync } = require('child_process');
|
|
const { join } = require('path');
|
|
const findChrome = require('carlo/lib/find_chrome');
|
|
const detectInstaller = require('detect-installer');
|
|
|
|
const installPuppeteer = () => {
|
|
// find can use package manger
|
|
const packages = detectInstaller(join(__dirname, '../../'));
|
|
// get installed package manger
|
|
const packageName = packages.find(detectInstaller.hasPackageCommand) || 'npm';
|
|
console.log(`🤖 will use ${packageName} install puppeteer`);
|
|
const command = `${packageName} ${packageName.includes('yarn') ? 'add' : 'i'} puppeteer`;
|
|
execSync(command, {
|
|
stdio: 'inherit',
|
|
});
|
|
};
|
|
|
|
const initPuppeteer = async () => {
|
|
try {
|
|
// eslint-disable-next-line import/no-unresolved
|
|
const findChromePath = await findChrome({});
|
|
const { executablePath } = findChromePath;
|
|
console.log(`🧲 find you browser in ${executablePath}`);
|
|
return;
|
|
} catch (error) {
|
|
console.log('🧲 no find chrome');
|
|
}
|
|
|
|
try {
|
|
require.resolve('puppeteer');
|
|
} catch (error) {
|
|
// need install puppeteer
|
|
await installPuppeteer();
|
|
}
|
|
};
|
|
|
|
initPuppeteer();
|