-
Notifications
You must be signed in to change notification settings - Fork 1
/
preinstall.js
38 lines (30 loc) · 1.24 KB
/
preinstall.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
const util = require( 'util' )
const exec = util.promisify( require( 'child_process' ).exec )
const fs = require( 'fs' ).promises
let packageFilePath = '../../package.json'
let package = require( packageFilePath )
let packageString = JSON.stringify( package )
let getPackages = require( './get_packages' )
let fun = ( async () => {
let packagesToBeInstalledArray = await getPackages.getPackages()
let packagesToBeInstalledObj = {}
try {
let commandPrefix = ''
if( /^win/.test( process.platform ) === false ) {
commandPrefix = `sudo `
}
let result = await exec( `${commandPrefix}npm view ${ packagesToBeInstalledArray[ 0 ] } version` )
packagesToBeInstalledObj[ packagesToBeInstalledArray[ 0 ] ] = "^" + result.stdout.replace(/\n/g, '')
if( typeof packagesToBeInstalledArray[ 1 ] !== 'undefined' ) {
result = await exec( `${commandPrefix}npm view ${ packagesToBeInstalledArray[ 1 ] } version` )
packagesToBeInstalledObj[ packagesToBeInstalledArray[ 1 ] ] = "^" + result.stdout.replace(/\n/g, '')
}
package.dependencies = {
...packagesToBeInstalledObj,
...package.dependencies
}
fs.writeFile( packageFilePath, JSON.stringify( package, null, 2 ) )
} catch( e ) {
throw e
}
})()