uppy/bin/run-example.js
2021-06-24 15:12:16 +02:00

31 lines
1.2 KiB
JavaScript

#!/usr/bin/env node
/**
* Lerna installs all the example dependencies into the root `node_modules`.
* To run the examples they need to have access to executables from npm dependencies in their $PATH.
* If you run `npm start` in a dependency folder, the root `node_modules/.bin` is not in the $PATH.
*
* This proxy executable can be run from the repository root using `npm run example`, so the root
* `node_modules/.bin` will be in the $PATH. It then runs `npm start` in the specific example folder,
* which will inherit the $PATH, so the example has access to executables from npm dependencies in both
* its own and in the root `node_modules`.
*/
const path = require('path')
const { execSync } = require('child_process')
const exampleName = process.argv[2]
if (!exampleName) {
console.error('Usage: npm run example "name-of-example"')
process.exit(1)
}
const exampleDir = path.join(__dirname, '../examples', exampleName)
// eslint-disable-next-line import/no-dynamic-require
const pkg = require(path.join(exampleDir, 'package.json'))
if (pkg.scripts && pkg.scripts.build) {
execSync('npm run build', { cwd: exampleDir, stdio: 'inherit' })
}
execSync('npm start', { cwd: exampleDir, stdio: 'inherit' })