runtime-npm-install
Install npm modules programmatically
key features
- under the hood, uses globally installed npm through
npm-install-to
- takes packages in the equivalent format as
npm install
@scope/name
name@tag/version
githubusername/repo
- etc.
- once installed packages will resolve instantly due to caching
install
npm install runtime-npm-install
usage
Provides two functions, of which npmInstallAsync
returns metadata of installed
modules, while npmImportAsync
returns a list of what installed modules export.
The argument installPath
determines where modules should be npm install
ed on
the file system. It defaults to a temporary directory, but should be given if
you wish subsequent invocations to either function to be quick. See
npm-install-to
for more on
the caching.
The argument of packages
is a list of package specs as strings, corresponding
to how npm install
command is given packages to be installed. More information
on that available with npm help install
.
API
npmInstallAsync(packages: string[], installPath?: string, npmInstallToOpts?: Object): Promise<...>
Installs specified packages, returning a promise that resolves to an object
containing output of npm install
and metadata of installed packages.
example
const npmInstallAsync = const path = const tmpDir = path
output
packages: spec: 'treis@2.6.0' name: 'treis' json: Object path: '/var/folders/5w/g91lyqdd20b4wsrb2r434nwr0000gn/T/my-app/node_modules/treis' spec: 'lodash' name: 'lodash' json: Object path: '/var/folders/5w/g91lyqdd20b4wsrb2r434nwr0000gn/T/my-app/node_modules/lodash' spec: 'ramda@0.26.1' name: 'ramda' json: Object path: '/var/folders/5w/g91lyqdd20b4wsrb2r434nwr0000gn/T/my-app/node_modules/ramda' npmOutput: '+ treis@2.6.0\n+ ramda@0.26.1\n+ lodash@4.17.11\nadded 12 packages from 9 contributors and audited 15 packages in 1.492s\nfound 0 vulnerabilities'
npmImportAsync(packages: string[], installPath?: string, npmInstallToOpts?: Object): Promise<...>
Installs specified packages, returning exports corresponding to each package as a list.
getPkgsToBeInstalled(packages: string[], installPath: string): Promise<string[]>
Use to check which given packages would be installed by either of the functions.
This function comes directly from npm-install-to
.
example
const npmImportAsync = ;async { const treis _ R = await R // 7}
demo of debug logging and cache
const npmInstallAsync = const path = const taim = const tmpDir = pathconsole ;async { await 'treis@2.6.0' 'lodash' 'ramda@0.26.1' tmpDir await 'treis@2.6.0' 'lodash' 'ramda@0.26.1' tmpDir}