@@ -17,50 +17,49 @@ export class DestCopy implements IBroccoliPlugin {
17
17
private dependencies : IDictionary < any > = null ;
18
18
private devDependencies : IDictionary < any > = null ;
19
19
20
- constructor ( private inputPath : string , private cachePath : string , private outputRoot : string , private projectDir : string ) {
20
+ constructor ( private inputPath : string , private cachePath : string , private outputRoot : string , private projectDir : string ,
21
+ private $fs : IFileSystem ) {
21
22
this . dependencies = Object . create ( null ) ;
22
23
this . devDependencies = this . getDevDependencies ( projectDir ) ;
23
24
}
24
25
25
26
public rebuildChangedDirectories ( changedDirectories : string [ ] ) : void {
26
27
_ . each ( changedDirectories , changedDirectoryAbsolutePath => {
27
28
let pathToPackageJson = path . join ( changedDirectoryAbsolutePath , "package.json" ) ;
28
- if ( fs . existsSync ( pathToPackageJson ) ) {
29
- let packageJsonFiles = [ pathToPackageJson ] ;
30
- let nodeModulesFolderPath = path . join ( changedDirectoryAbsolutePath , "node_modules" ) ;
31
- packageJsonFiles = packageJsonFiles . concat ( this . enumeratePackageJsonFilesSync ( nodeModulesFolderPath ) ) ;
29
+ let packageJsonFiles = fs . existsSync ( pathToPackageJson ) ? [ pathToPackageJson ] : [ ] ;
30
+ let nodeModulesFolderPath = path . join ( changedDirectoryAbsolutePath , "node_modules" ) ;
31
+ packageJsonFiles = packageJsonFiles . concat ( this . enumeratePackageJsonFilesSync ( nodeModulesFolderPath ) ) ;
32
+
33
+ _ . each ( packageJsonFiles , packageJsonFilePath => {
34
+ let fileContent = require ( packageJsonFilePath ) ;
35
+ let isPlugin = fileContent . nativescript ;
36
+
37
+ if ( ! this . devDependencies [ fileContent . name ] ) { // Don't flatten dev dependencies
38
+
39
+ let currentDependency = {
40
+ name : fileContent . name ,
41
+ version : fileContent . version ,
42
+ directory : path . dirname ( packageJsonFilePath ) ,
43
+ isPlugin : isPlugin
44
+ } ;
32
45
33
- _ . each ( packageJsonFiles , packageJsonFilePath => {
34
- let fileContent = require ( packageJsonFilePath ) ;
35
- let isPlugin = fileContent . nativescript ;
46
+ let addedDependency = this . dependencies [ currentDependency . name ] ;
47
+ if ( addedDependency ) {
48
+ if ( semver . gt ( currentDependency . version , addedDependency . version ) ) {
49
+ let currentDependencyMajorVersion = semver . major ( currentDependency . version ) ;
50
+ let addedDependencyMajorVersion = semver . major ( addedDependency . version ) ;
51
+
52
+ let message = `The depedency located at ${ addedDependency . directory } with version ${ addedDependency . version } will be replaced with dependency located at ${ currentDependency . directory } with version ${ currentDependency . version } ` ;
53
+ let logger = $injector . resolve ( "$logger" ) ;
54
+ currentDependencyMajorVersion === addedDependencyMajorVersion ? logger . out ( message ) : logger . warn ( message ) ;
36
55
37
- if ( ! this . devDependencies [ fileContent . name ] ) { // Don't flatten dev dependencies
38
-
39
- let currentDependency = {
40
- name : fileContent . name ,
41
- version : fileContent . version ,
42
- directory : path . dirname ( packageJsonFilePath ) ,
43
- isPlugin : isPlugin
44
- } ;
45
-
46
- let addedDependency = this . dependencies [ currentDependency . name ] ;
47
- if ( addedDependency ) {
48
- if ( semver . gt ( currentDependency . version , addedDependency . version ) ) {
49
- let currentDependencyMajorVersion = semver . major ( currentDependency . version ) ;
50
- let addedDependencyMajorVersion = semver . major ( addedDependency . version ) ;
51
-
52
- let message = `The depedency located at ${ addedDependency . directory } with version ${ addedDependency . version } will be replaced with dependency located at ${ currentDependency . directory } with version ${ currentDependency . version } ` ;
53
- let logger = $injector . resolve ( "$logger" ) ;
54
- currentDependencyMajorVersion === addedDependencyMajorVersion ? logger . out ( message ) : logger . warn ( message ) ;
55
-
56
- this . dependencies [ currentDependency . name ] = currentDependency ;
57
- }
58
- } else {
59
56
this . dependencies [ currentDependency . name ] = currentDependency ;
60
57
}
58
+ } else {
59
+ this . dependencies [ currentDependency . name ] = currentDependency ;
61
60
}
62
- } ) ;
63
- }
61
+ }
62
+ } ) ;
64
63
} ) ;
65
64
66
65
_ . each ( this . dependencies , dependency => {
@@ -93,7 +92,10 @@ export class DestCopy implements IBroccoliPlugin {
93
92
if ( fs . existsSync ( nodeModulesDirectoryPath ) ) {
94
93
let contents = fs . readdirSync ( nodeModulesDirectoryPath ) ;
95
94
for ( let i = 0 ; i < contents . length ; ++ i ) {
96
- foundFiles . push ( path . join ( nodeModulesDirectoryPath , contents [ i ] , "package.json" ) ) ;
95
+ let packageJsonFilePath = path . join ( nodeModulesDirectoryPath , contents [ i ] , "package.json" ) ;
96
+ if ( fs . existsSync ( packageJsonFilePath ) ) {
97
+ foundFiles . push ( packageJsonFilePath ) ;
98
+ }
97
99
98
100
var directoryPath = path . join ( nodeModulesDirectoryPath , contents [ i ] , "node_modules" ) ;
99
101
if ( fs . existsSync ( directoryPath ) ) {
0 commit comments