UNPKG

2.25 kBJavaScriptView Raw
1import process from 'node:process';
2
3import semver from 'semver';
4
5import get from './get.js';
6import util from './util.js';
7
8import nodeManifest from '../package.json' assert { type: 'json' };
9
10await postinstall()
11 .catch((error) => {
12 if (error.code === 'EPERM') {
13 console.error('Unable to create symlink since user did not run as Administrator.');
14 }
15 });
16
17async function postinstall() {
18 const parsedVersion = semver.parse(nodeManifest.version);
19 let version = [
20 parsedVersion.major,
21 parsedVersion.minor,
22 parsedVersion.patch
23 ].join('.');
24
25 let flavor = process.env.npm_config_nwjs_build_type || process.env.NWJS_BUILD_TYPE || 'normal';
26 /* Check if version is a prelease. */
27 if (typeof parsedVersion?.prerelease?.[0] === 'string') {
28 let prerelease = parsedVersion.prerelease[0].split('-');
29 if (prerelease.length > 1) {
30 prerelease = prerelease.slice(0, -1);
31 }
32 version = [version, ...prerelease].join('-');
33 }
34
35 /* Check build flavor and slice that off the `version`. */
36 if (version.endsWith('-sdk')) {
37 version = version.slice(0, -4);
38 flavor = 'sdk';
39 } else if (version.endsWith('sdk')) {
40 version = version.slice(0, -3);
41 flavor = 'sdk';
42 }
43
44 const platform = util.PLATFORM_KV[process.env.npm_config_nwjs_platform || process.env.NWJS_PLATFORM || process.platform];
45 const arch = util.ARCH_KV[process.env.npm_config_nwjs_process_arch || process.env.NWJS_ARCH || process.arch];
46 const downloadUrl = process.env.npm_config_nwjs_urlbase || process.env.NWJS_URLBASE || 'https://dl.nwjs.io';
47 const cacheDir = process.env.npm_config_nwjs_cache_dir || process.env.NWJS_CACHE_DIR || '.';
48 const cache = process.env.npm_config_nwjs_cache || process.env.NWJS_CACHE || true;
49 const ffmpeg = process.env.npm_config_nwjs_ffmpeg || process.env.NWJS_FFMPEG || false;
50 const nativeAddon = process.env.npm_config_nwjs_native_addon || process.env.NWJS_NATIVE_ADDON || false;
51
52 await get({
53 version,
54 flavor,
55 platform,
56 arch,
57 downloadUrl,
58 cacheDir,
59 cache,
60 ffmpeg: ffmpeg,
61 nativeAddon: nativeAddon
62 });
63}