1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | buildNode6IfNecessary();
|
18 |
|
19 | if (process.env.PUPPETEER_SKIP_CHROMIUM_DOWNLOAD) {
|
20 | console.log('**INFO** Skipping Chromium download. "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" environment variable was found.');
|
21 | return;
|
22 | }
|
23 | if (process.env.NPM_CONFIG_PUPPETEER_SKIP_CHROMIUM_DOWNLOAD || process.env.npm_config_puppeteer_skip_chromium_download) {
|
24 | console.log('**INFO** Skipping Chromium download. "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" was set in npm config.');
|
25 | return;
|
26 | }
|
27 |
|
28 | const Downloader = require('./lib/Downloader');
|
29 | const downloader = Downloader.createDefault();
|
30 |
|
31 | const platform = downloader.currentPlatform();
|
32 | const revision = Downloader.defaultRevision();
|
33 | const ProgressBar = require('progress');
|
34 |
|
35 | const revisionInfo = downloader.revisionInfo(platform, revision);
|
36 |
|
37 | if (revisionInfo.downloaded)
|
38 | return;
|
39 |
|
40 |
|
41 | const NPM_HTTPS_PROXY = process.env.npm_config_https_proxy || process.env.npm_config_proxy;
|
42 | const NPM_HTTP_PROXY = process.env.npm_config_http_proxy || process.env.npm_config_proxy;
|
43 | const NPM_NO_PROXY = process.env.npm_config_no_proxy;
|
44 |
|
45 | if (NPM_HTTPS_PROXY)
|
46 | process.env.HTTPS_PROXY = NPM_HTTPS_PROXY;
|
47 | if (NPM_HTTP_PROXY)
|
48 | process.env.HTTP_PROXY = NPM_HTTP_PROXY;
|
49 | if (NPM_NO_PROXY)
|
50 | process.env.NO_PROXY = NPM_NO_PROXY;
|
51 |
|
52 | const allRevisions = downloader.downloadedRevisions();
|
53 | const downloadHost = process.env.PUPPETEER_DOWNLOAD_HOST || process.env.npm_config_puppeteer_download_host;
|
54 | if (downloadHost)
|
55 | downloader.setDownloadHost(downloadHost);
|
56 | downloader.downloadRevision(platform, revision, onProgress)
|
57 | .then(onSuccess)
|
58 | .catch(onError);
|
59 |
|
60 |
|
61 |
|
62 |
|
63 | function onSuccess() {
|
64 | console.log('Chromium downloaded to ' + revisionInfo.folderPath);
|
65 |
|
66 | const cleanupOldVersions = allRevisions.map(({platform, revision}) => downloader.removeRevision(platform, revision));
|
67 | return Promise.all(cleanupOldVersions);
|
68 | }
|
69 |
|
70 |
|
71 |
|
72 |
|
73 | function onError(error) {
|
74 | console.error(`ERROR: Failed to download Chromium r${revision}! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.`);
|
75 | console.error(error);
|
76 | process.exit(1);
|
77 | }
|
78 |
|
79 | let progressBar = null;
|
80 | function onProgress(bytesTotal, delta) {
|
81 | if (!progressBar) {
|
82 | progressBar = new ProgressBar(`Downloading Chromium r${revision} - ${toMegabytes(bytesTotal)} [:bar] :percent :etas `, {
|
83 | complete: '=',
|
84 | incomplete: ' ',
|
85 | width: 20,
|
86 | total: bytesTotal,
|
87 | });
|
88 | }
|
89 | progressBar.tick(delta);
|
90 | }
|
91 |
|
92 | function toMegabytes(bytes) {
|
93 | const mb = bytes / 1024 / 1024;
|
94 | return `${Math.round(mb * 10) / 10} Mb`;
|
95 | }
|
96 |
|
97 | function buildNode6IfNecessary() {
|
98 | const fs = require('fs');
|
99 | const path = require('path');
|
100 |
|
101 |
|
102 |
|
103 | if (!fs.existsSync(path.join('utils', 'node6-transform')))
|
104 | return;
|
105 | let asyncawait = true;
|
106 | try {
|
107 | new Function('async function test(){await 1}');
|
108 | } catch (error) {
|
109 | asyncawait = false;
|
110 | }
|
111 |
|
112 | if (asyncawait)
|
113 | return;
|
114 |
|
115 | console.log('Building Puppeteer for Node 6');
|
116 | require(path.join(__dirname, 'utils', 'node6-transform'));
|
117 | }
|