3
3
4
4
const path = require ( 'path' ) ;
5
5
const resolvePackagePath = require ( 'resolve-package-path' ) ;
6
- const semver = require ( 'semver' ) ;
7
- const SilentError = require ( 'silent-error' ) ;
8
6
const stripIndent = require ( 'common-tags' ) . stripIndent ;
9
7
10
- // avoid checking multiple times from the same location
11
- let HAS_PEER_DEPS_INSTALLED = new Map ( ) ;
12
- function hasPeerDependenciesInstalled ( parentRoot ) {
13
- if ( HAS_PEER_DEPS_INSTALLED . has ( parentRoot ) ) {
14
- return HAS_PEER_DEPS_INSTALLED . get ( parentRoot ) ;
15
- }
16
-
17
- let peerDependencies = require ( './package' ) . peerDependencies ;
18
-
19
- for ( let packageName in peerDependencies ) {
20
- let minimumVersion = peerDependencies [ packageName ] . substring ( 1 ) ;
21
-
22
- let packagePath = resolvePackagePath ( packageName , parentRoot ) ;
23
- if ( packagePath === null ) {
24
- HAS_PEER_DEPS_INSTALLED . set ( parentRoot , false ) ;
25
- return false ;
26
- }
27
-
28
- let packageVersion = require ( packagePath ) . version ;
29
- if ( semver . lt ( packageVersion , minimumVersion ) ) {
30
- HAS_PEER_DEPS_INSTALLED . set ( parentRoot , false ) ;
31
- return false ;
32
- }
33
- }
34
-
35
- HAS_PEER_DEPS_INSTALLED . set ( parentRoot , true ) ;
36
- return true ;
37
- }
8
+ const validatePeerDependencies = require ( 'validate-peer-dependencies' ) ;
38
9
39
10
module . exports = {
40
11
name : 'ember-qunit' ,
@@ -48,21 +19,9 @@ module.exports = {
48
19
included ( ) {
49
20
this . _super . included . apply ( this , arguments ) ;
50
21
51
- if ( ! hasPeerDependenciesInstalled ( this . parent . root ) ) {
52
- let peerDependencies = require ( './package' ) . peerDependencies ;
53
- let packages = Object . keys ( peerDependencies ) . map (
54
- ( name ) => `"${ name } @${ peerDependencies [ name ] } "`
55
- ) ;
56
- let hasYarnLock = this . project . has ( 'yarn.lock' ) ;
57
-
58
- let installMessage = `${
59
- hasYarnLock ? 'yarn add' : 'npm install'
60
- } --dev ${ packages . join ( ' ' ) } `;
61
-
62
- throw new SilentError (
63
- `ember-qunit now requires that \`qunit\` and \`@ember/test-helpers\` are \`devDependencies\` of the project. Please run:\n\t${ installMessage } `
64
- ) ;
65
- }
22
+ validatePeerDependencies ( __dirname , {
23
+ resolvePackagePathFrom : this . parent . root ,
24
+ } ) ;
66
25
67
26
// TODO: figure out how to make this not needed, AFAICT ember-auto-import
68
27
// does not provide any ability to import styles
0 commit comments