@@ -261,17 +261,26 @@ function createApp(
261
261
}
262
262
} else if ( usePnp ) {
263
263
const yarnInfo = checkYarnVersion ( ) ;
264
- if ( ! yarnInfo . hasMinYarnPnp ) {
265
- if ( yarnInfo . yarnVersion ) {
264
+ if ( yarnInfo . yarnVersion ) {
265
+ if ( ! yarnInfo . hasMinYarnPnp ) {
266
266
console . log (
267
267
chalk . yellow (
268
268
`You are using Yarn ${ yarnInfo . yarnVersion } together with the --use-pnp flag, but Plug'n'Play is only supported starting from the 1.12 release.\n\n` +
269
269
`Please update to Yarn 1.12 or higher for a better, fully supported experience.\n`
270
270
)
271
271
) ;
272
+ // 1.11 had an issue with webpack-dev-middleware, so better not use PnP with it (never reached stable, but still)
273
+ usePnp = false ;
274
+ }
275
+ if ( ! yarnInfo . hasMaxYarnPnp ) {
276
+ console . log (
277
+ chalk . yellow (
278
+ 'The --use-pnp flag is no longer necessary with yarn 2 and will be deprecated and removed in a future release.\n'
279
+ )
280
+ ) ;
281
+ // 2 supports PnP by default and breaks when trying to use the flag
282
+ usePnp = false ;
272
283
}
273
- // 1.11 had an issue with webpack-dev-middleware, so better not use PnP with it (never reached stable, but still)
274
- usePnp = false ;
275
284
}
276
285
}
277
286
@@ -775,14 +784,17 @@ function checkNpmVersion() {
775
784
776
785
function checkYarnVersion ( ) {
777
786
const minYarnPnp = '1.12.0' ;
787
+ const maxYarnPnp = '2.0.0' ;
778
788
let hasMinYarnPnp = false ;
789
+ let hasMaxYarnPnp = false ;
779
790
let yarnVersion = null ;
780
791
try {
781
792
yarnVersion = execSync ( 'yarnpkg --version' )
782
793
. toString ( )
783
794
. trim ( ) ;
784
795
if ( semver . valid ( yarnVersion ) ) {
785
796
hasMinYarnPnp = semver . gte ( yarnVersion , minYarnPnp ) ;
797
+ hasMaxYarnPnp = semver . lt ( yarnVersion , maxYarnPnp ) ;
786
798
} else {
787
799
// Handle non-semver compliant yarn version strings, which yarn currently
788
800
// uses for nightly builds. The regex truncates anything after the first
@@ -791,13 +803,15 @@ function checkYarnVersion() {
791
803
if ( trimmedYarnVersionMatch ) {
792
804
const trimmedYarnVersion = trimmedYarnVersionMatch . pop ( ) ;
793
805
hasMinYarnPnp = semver . gte ( trimmedYarnVersion , minYarnPnp ) ;
806
+ hasMaxYarnPnp = semver . lt ( trimmedYarnVersion , maxYarnPnp ) ;
794
807
}
795
808
}
796
809
} catch ( err ) {
797
810
// ignore
798
811
}
799
812
return {
800
813
hasMinYarnPnp : hasMinYarnPnp ,
814
+ hasMaxYarnPnp : hasMaxYarnPnp ,
801
815
yarnVersion : yarnVersion ,
802
816
} ;
803
817
}
0 commit comments