-
-
Notifications
You must be signed in to change notification settings - Fork 6.6k
Expand file tree
/
Copy pathget_jest.js
More file actions
47 lines (44 loc) · 1.36 KB
/
get_jest.js
File metadata and controls
47 lines (44 loc) · 1.36 KB
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
39
40
41
42
43
44
45
46
47
/**
* Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
*/
import type {Path} from 'types/Config';
import path from 'path';
import chalk from 'chalk';
import fs from 'graceful-fs';
// eslint-disable-next-line import/default
import jest from '../jest';
export default function getJest(packageRoot: Path) {
const packageJSONPath = path.join(packageRoot, 'package.json');
const binPath = path.join(packageRoot, 'node_modules/jest-cli');
if (fs.existsSync(binPath)) {
/* $FlowFixMe */
return require(binPath);
} else {
// Check if Jest is specified in `package.json` but not installed.
if (fs.existsSync(packageJSONPath)) {
/* $FlowFixMe */
const packageJSON = require(packageJSONPath);
const dependencies = packageJSON.dependencies;
const devDependencies = packageJSON.devDependencies;
if (
(dependencies && dependencies['jest-cli']) ||
(devDependencies && devDependencies['jest-cli'])
) {
process.on('exit', () =>
console.log(
chalk.red(
'Please run `npm install` to use the version of Jest intended ' +
'for this project.',
),
),
);
}
}
return jest;
}
}