提交 2faee1f2 编写于 作者: Huan (李卓桓)'s avatar Huan (李卓桓)

Use in-gfw to set puppeteer download url only inside GFW

上级 ec2553ee
import path from 'path' import path from 'path'
import readPkgUp from 'read-pkg-up'
import npm from 'npm-programmatic' import readPkgUp from 'read-pkg-up'
import pkgDir from 'pkg-dir' import npm from 'npm-programmatic'
import semver from 'semver' import pkgDir from 'pkg-dir'
import semver from 'semver'
import inGfw from 'in-gfw'
import { import {
Puppet, Puppet,
...@@ -19,12 +20,8 @@ import { ...@@ -19,12 +20,8 @@ import {
PUPPET_NAME_DEFAULT, PUPPET_NAME_DEFAULT,
PuppetModuleName, PuppetModuleName,
} from './puppet-config' } from './puppet-config'
import {
// Wechaty,
} from './wechaty'
export interface ResolveOptions { export interface ResolveOptions {
// wechaty : Wechaty,
puppet : Puppet | PuppetModuleName, puppet : Puppet | PuppetModuleName,
puppetOptions? : PuppetOptions, puppetOptions? : PuppetOptions,
} }
...@@ -35,7 +32,6 @@ export class PuppetManager { ...@@ -35,7 +32,6 @@ export class PuppetManager {
options: ResolveOptions options: ResolveOptions
): Promise<Puppet> { ): Promise<Puppet> {
log.verbose('PuppetManager', 'resolve({puppet: %s, puppetOptions: %s})', log.verbose('PuppetManager', 'resolve({puppet: %s, puppetOptions: %s})',
// options.wechaty,
options.puppet, options.puppet,
JSON.stringify(options.puppetOptions), JSON.stringify(options.puppetOptions),
) )
...@@ -188,16 +184,32 @@ export class PuppetManager { ...@@ -188,16 +184,32 @@ export class PuppetManager {
} }
} }
public static async preInstallPuppeteer (): Promise<void> {
let gfw = false
try {
gfw = await inGfw()
if (gfw) {
log.verbose('PuppetManager', 'preInstallPuppeteer() inGfw = true')
}
} catch (e) {
log.verbose('PuppetManager', 'preInstallPuppeteer() exception: %s', e)
}
// https://github.com/GoogleChrome/puppeteer/issues/1597#issuecomment-351945645
if (gfw && !process.env['PUPPETEER_DOWNLOAD_HOST']) {
log.info('PuppetManager', 'preInstallPuppeteer() set PUPPETEER_DOWNLOAD_HOST=https://npm.taobao.org/mirrors/')
process.env['PUPPETEER_DOWNLOAD_HOST'] = 'https://npm.taobao.org/mirrors/'
}
}
public static async install ( public static async install (
puppetModule: string, puppetModule: string,
puppetVersion = 'latest', puppetVersion = 'latest',
): Promise<void> { ): Promise<void> {
log.info('PuppetManager', 'install(%s@%s) please wait ...', puppetModule, puppetVersion) log.info('PuppetManager', 'install(%s@%s) please wait ...', puppetModule, puppetVersion)
// https://github.com/GoogleChrome/puppeteer/issues/1597#issuecomment-351945645 if (puppetModule === 'wechaty-puppet-puppeteer') {
if (puppetModule === 'wechaty-puppet-puppeteer' && !process.env['PUPPETEER_DOWNLOAD_HOST']) { await this.preInstallPuppeteer()
log.info('PuppetManager', 'install(%s) set PUPPETEER_DOWNLOAD_HOST=https://npm.taobao.org/mirrors/', puppetModule)
process.env['PUPPETEER_DOWNLOAD_HOST'] = 'https://npm.taobao.org/mirrors/'
} }
await npm.install( await npm.install(
......
...@@ -3,3 +3,4 @@ declare module 'blessed-contrib' ...@@ -3,3 +3,4 @@ declare module 'blessed-contrib'
declare module 'qrcode-terminal' declare module 'qrcode-terminal'
declare module 'json-rpc-peer' declare module 'json-rpc-peer'
declare module 'npm-programmatic' declare module 'npm-programmatic'
declare module 'in-gfw'
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册