15
15
'use strict' ;
16
16
17
17
const dot = require ( 'dot' ) ;
18
- const prettier = require ( 'prettier ' ) ;
18
+ const { minify } = require ( 'terser ' ) ;
19
19
const fse = require ( 'fs-extra' ) ;
20
20
const path = require ( 'path' ) ;
21
21
const parser = require ( '../rosidl_parser/rosidl_parser.js' ) ;
@@ -29,10 +29,6 @@ const dots = dot.process({
29
29
path : path . join ( __dirname , '../rosidl_gen/templates' ) ,
30
30
} ) ;
31
31
32
- function removeEmptyLines ( str ) {
33
- return str . replace ( / ^ \s * \n / gm, '' ) ;
34
- }
35
-
36
32
/**
37
33
* Output generated code to disk. Do not overwrite
38
34
* an existing file. If file already exists do nothing.
@@ -41,11 +37,18 @@ function removeEmptyLines(str) {
41
37
* @param {string } code
42
38
*/
43
39
async function writeGeneratedCode ( dir , fileName , code ) {
44
- if ( fileName . endsWith ( '.js' ) ) {
45
- code = await prettier . format ( code , { parser : 'babel' } ) ;
40
+ let result = null ;
41
+ if ( ! isDebug && fileName . endsWith ( '.js' ) ) {
42
+ try {
43
+ result = await minify ( code ) ;
44
+ } catch ( error ) {
45
+ console . error ( `Error minifying ${ fileName } :` , error ) ;
46
+ result = null ;
47
+ }
46
48
}
49
+
47
50
await fse . mkdirs ( dir ) ;
48
- await fse . writeFile ( path . join ( dir , fileName ) , code ) ;
51
+ await fse . writeFile ( path . join ( dir , fileName ) , result ? result . code : code ) ;
49
52
}
50
53
51
54
async function generateServiceJSStruct (
@@ -61,9 +64,7 @@ async function generateServiceJSStruct(
61
64
'__' +
62
65
serviceInfo . interfaceName +
63
66
'.js' ;
64
- const generatedSrvCode = removeEmptyLines (
65
- dots . service ( { serviceInfo : serviceInfo } )
66
- ) ;
67
+ const generatedSrvCode = dots . service ( { serviceInfo : serviceInfo } ) ;
67
68
68
69
// We are going to only generate the service JavaScript file if it meets one
69
70
// of the followings:
@@ -84,9 +85,7 @@ async function generateServiceJSStruct(
84
85
85
86
async function generateServiceEventMsg ( serviceInfo , dir ) {
86
87
const fileName = serviceInfo . interfaceName + '.msg' ;
87
- const generatedEvent = removeEmptyLines (
88
- dots . service_event ( { serviceInfo : serviceInfo } )
89
- ) ;
88
+ const generatedEvent = dots . service_event ( { serviceInfo : serviceInfo } ) ;
90
89
91
90
return writeGeneratedCode ( dir , fileName , generatedEvent ) . then ( ( ) => {
92
91
serviceInfo . interfaceName += '_Event' ;
@@ -119,14 +118,12 @@ async function generateServiceEventJSStruct(msgInfo, dir) {
119
118
// const AddTwoInts_RequestWrapper = require('../../generated/example_interfaces/example_interfaces__srv__AddTwoInts_Request.js');
120
119
// const AddTwoInts_ResponseWrapper = require('../../generated/example_interfaces/example_interfaces__srv__AddTwoInts_Response.js');
121
120
msgInfo . isServiceEvent = true ;
122
- const generatedCode = removeEmptyLines (
123
- dots . message ( {
124
- messageInfo : msgInfo ,
125
- spec : spec ,
126
- json : JSON . stringify ( spec , null , ' ' ) ,
127
- isDebug : isDebug ,
128
- } )
129
- ) ;
121
+ const generatedCode = dots . message ( {
122
+ messageInfo : msgInfo ,
123
+ spec : spec ,
124
+ json : JSON . stringify ( spec , null , ' ' ) ,
125
+ isDebug : isDebug ,
126
+ } ) ;
130
127
131
128
return writeGeneratedCode ( dir , eventFileName , generatedCode ) ;
132
129
}
@@ -149,14 +146,12 @@ function generateMessageJSStructFromSpec(messageInfo, dir, spec) {
149
146
spec . msgName +
150
147
'.js' ;
151
148
152
- const generatedCode = removeEmptyLines (
153
- dots . message ( {
154
- messageInfo : messageInfo ,
155
- spec : spec ,
156
- json : JSON . stringify ( spec , null , ' ' ) ,
157
- isDebug : isDebug ,
158
- } )
159
- ) ;
149
+ const generatedCode = dots . message ( {
150
+ messageInfo : messageInfo ,
151
+ spec : spec ,
152
+ json : JSON . stringify ( spec , null , ' ' ) ,
153
+ isDebug : isDebug ,
154
+ } ) ;
160
155
return writeGeneratedCode ( dir , fileName , generatedCode ) ;
161
156
}
162
157
@@ -291,9 +286,7 @@ async function generateActionJSStruct(actionInfo, dir) {
291
286
'__' +
292
287
actionInfo . interfaceName +
293
288
'.js' ;
294
- const generatedCode = removeEmptyLines (
295
- dots . action ( { actionInfo : actionInfo } )
296
- ) ;
289
+ const generatedCode = dots . action ( { actionInfo : actionInfo } ) ;
297
290
dir = path . join ( dir , actionInfo . pkgName ) ;
298
291
const action = writeGeneratedCode ( dir , fileName , generatedCode ) ;
299
292
0 commit comments