@@ -18,7 +18,7 @@ import { EOL } from "os";
1818import * as detectNewline from "detect-newline" ;
1919import { IFileSystem , IReadFileOptions , IFsStats } from "./declarations" ;
2020import { IInjector } from "./definitions/yok" ;
21- import { create as createArchiver } from "archiver " ;
21+ import * as yazl from "yazl " ;
2222
2323// TODO: Add .d.ts for mkdirp module (or use it from @types repo).
2424const mkdirp = require ( "mkdirp" ) ;
@@ -37,28 +37,24 @@ export class FileSystem implements IFileSystem {
3737 ) : Promise < void > {
3838 //we are resolving it here instead of in the constructor, because config has dependency on file system and config shouldn't require logger
3939 const $logger = this . $injector . resolve ( "logger" ) ;
40- const zip = createArchiver ( "zip" , {
41- zlib : {
42- level : 9 ,
43- } ,
44- } ) ;
40+ const zip = new yazl . ZipFile ( ) ;
4541 const outFile = fs . createWriteStream ( zipFile ) ;
46- zip . pipe ( outFile ) ;
42+
43+ for ( const file of files ) {
44+ let relativePath = zipPathCallback ( file ) ;
45+ relativePath = relativePath . replace ( / \\ / g, "/" ) ;
46+ $logger . trace ( "zipping as '%s' file '%s'" , relativePath , file ) ;
47+ zip . addFile ( file , relativePath , { compress : true } ) ;
48+ }
49+ zip . end ( ) ;
4750
4851 return new Promise < void > ( ( resolve , reject ) => {
4952 outFile . on ( "error" , ( err : Error ) => reject ( err ) ) ;
53+ zip . outputStream . on ( "error" , ( err : Error ) => reject ( err ) ) ;
54+ zip . outputStream . pipe ( outFile ) ;
5055 outFile . on ( "close" , ( ) => {
51- $logger . trace ( "zip: %d bytes written" , zip . pointer ( ) ) ;
5256 resolve ( ) ;
5357 } ) ;
54-
55- for ( const file of files ) {
56- let relativePath = zipPathCallback ( file ) ;
57- relativePath = relativePath . replace ( / \\ / g, "/" ) ;
58- $logger . trace ( "zipping as '%s' file '%s'" , relativePath , file ) ;
59- zip . append ( fs . createReadStream ( file ) , { name : relativePath } ) ;
60- }
61- zip . finalize ( ) ;
6258 } ) ;
6359 }
6460
0 commit comments