@@ -3,6 +3,7 @@ const fs = require('fs');
3
3
const { sep : slash } = require ( 'path' ) ;
4
4
const path = require ( 'path' ) ;
5
5
const loaderUtils = require ( 'loader-utils' ) ;
6
+ const extend = require ( 'extend' ) ;
6
7
7
8
const spawn = require ( 'child_process' ) . spawn ;
8
9
@@ -19,28 +20,31 @@ module.exports = function (source) {
19
20
folder : `.${ slash } __javascript__` ,
20
21
install : 'pip install transcrypt' ,
21
22
python_version : '3.x' ,
22
- sourcemaps : true
23
+ sourcemaps : true ,
24
+ keep_compiled : false
23
25
} ,
24
26
jiphy : {
25
27
switches : '' ,
26
28
folder : `.${ slash } ` ,
27
29
install : 'pip install jiphy' ,
28
30
python_version : '2.x' ,
29
- sourcemaps : false
31
+ sourcemaps : false ,
32
+ keep_compiled : false
30
33
} ,
31
34
pj : {
32
35
switches : '--inline-map --source-name %f -s -' ,
33
36
folder : `.${ slash } ` ,
34
37
install : 'pip install javascripthon' ,
35
38
python_version : '3.x' ,
36
39
streaming : true ,
37
- sourcemaps : true
40
+ sourcemaps : true ,
41
+ keep_compiled : false
38
42
}
39
43
} ;
40
44
41
45
const options = loaderUtils . getOptions ( this ) ;
42
46
const compilerName = options && options . compiler || 'transcrypt' ;
43
- const compiler = compilers [ compilerName ] ;
47
+ const compiler = extend ( true , { } , compilers [ compilerName ] , options || { } ) ;
44
48
45
49
if ( ! compiler ) {
46
50
throw new Error ( `py-loader only supports ${
@@ -105,26 +109,33 @@ module.exports = function (source) {
105
109
return ;
106
110
}
107
111
cmd . get ( `${ compiler . name } ${ compiler . switches } '${ srcDir } ${ slash } ${ basename } .py'` , function ( err , data , stderr ) {
112
+
108
113
if ( ! err ) {
109
114
const filename = `${ srcDir } ${ slash } ${ compiler . folder } ${ slash } ${ basename } .js` ;
110
115
js = fs . readFileSync ( filename , "utf8" ) ;
111
- fs . unlinkSync ( filename ) ;
112
- if ( delete_after ) {
113
- fs . unlinkSync ( `${ srcDir } ${ slash } __${ fileinfo . name } .py` ) ;
116
+ if ( ! compiler . keep_compiled ) {
117
+ fs . unlinkSync ( filename ) ;
118
+ if ( delete_after ) {
119
+ fs . unlinkSync ( `${ srcDir } ${ slash } __${ fileinfo . name } .py` ) ;
120
+ }
114
121
}
115
122
116
123
if ( compiler . sourcemaps ) {
117
124
const sourceMapFile = `${ srcDir } ${ slash } ${ compiler . folder } ${ slash } extra${ slash } sourcemap${ slash } ${ basename } .js` ;
118
125
sourceMap = fs . readFileSync ( sourceMapFile + ".map" , "utf8" )
119
- fs . unlinkSync ( sourceMapFile + ".map" ) ;
120
- callback ( null , js , sourceMap ) ; }
126
+ if ( ! compiler . keep_compiled ) {
127
+ fs . unlinkSync ( sourceMapFile + ".map" ) ;
128
+ }
129
+ callback ( null , js , sourceMap ) ;
130
+ }
121
131
else {
122
132
callback ( null , js ) ;
123
133
}
124
134
125
135
}
126
136
else {
127
- console . log ( stderr )
137
+ console . error ( stderr )
138
+ console . error ( data )
128
139
// console.error(`Some error occurred on ${properName(compiler.name)} compiler execution. Have you installed ${properName(compiler.name)}? If not, please run \`${compiler.install}\` (requires Python ${compiler.python_version})`);
129
140
callback ( err ) ;
130
141
}
0 commit comments