1515'use strict' ;
1616
1717const dot = require ( 'dot' ) ;
18- const prettier = require ( 'prettier ' ) ;
18+ const { minify } = require ( 'terser ' ) ;
1919const fse = require ( 'fs-extra' ) ;
2020const path = require ( 'path' ) ;
2121const parser = require ( '../rosidl_parser/rosidl_parser.js' ) ;
@@ -29,10 +29,6 @@ const dots = dot.process({
2929 path : path . join ( __dirname , '../rosidl_gen/templates' ) ,
3030} ) ;
3131
32- function removeEmptyLines ( str ) {
33- return str . replace ( / ^ \s * \n / gm, '' ) ;
34- }
35-
3632/**
3733 * Output generated code to disk. Do not overwrite
3834 * an existing file. If file already exists do nothing.
@@ -41,11 +37,18 @@ function removeEmptyLines(str) {
4137 * @param {string } code
4238 */
4339async 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+ }
4648 }
49+
4750 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 ) ;
4952}
5053
5154async function generateServiceJSStruct (
@@ -61,9 +64,7 @@ async function generateServiceJSStruct(
6164 '__' +
6265 serviceInfo . interfaceName +
6366 '.js' ;
64- const generatedSrvCode = removeEmptyLines (
65- dots . service ( { serviceInfo : serviceInfo } )
66- ) ;
67+ const generatedSrvCode = dots . service ( { serviceInfo : serviceInfo } ) ;
6768
6869 // We are going to only generate the service JavaScript file if it meets one
6970 // of the followings:
@@ -84,9 +85,7 @@ async function generateServiceJSStruct(
8485
8586async function generateServiceEventMsg ( serviceInfo , dir ) {
8687 const fileName = serviceInfo . interfaceName + '.msg' ;
87- const generatedEvent = removeEmptyLines (
88- dots . service_event ( { serviceInfo : serviceInfo } )
89- ) ;
88+ const generatedEvent = dots . service_event ( { serviceInfo : serviceInfo } ) ;
9089
9190 return writeGeneratedCode ( dir , fileName , generatedEvent ) . then ( ( ) => {
9291 serviceInfo . interfaceName += '_Event' ;
@@ -119,14 +118,12 @@ async function generateServiceEventJSStruct(msgInfo, dir) {
119118 // const AddTwoInts_RequestWrapper = require('../../generated/example_interfaces/example_interfaces__srv__AddTwoInts_Request.js');
120119 // const AddTwoInts_ResponseWrapper = require('../../generated/example_interfaces/example_interfaces__srv__AddTwoInts_Response.js');
121120 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+ } ) ;
130127
131128 return writeGeneratedCode ( dir , eventFileName , generatedCode ) ;
132129}
@@ -149,14 +146,12 @@ function generateMessageJSStructFromSpec(messageInfo, dir, spec) {
149146 spec . msgName +
150147 '.js' ;
151148
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+ } ) ;
160155 return writeGeneratedCode ( dir , fileName , generatedCode ) ;
161156}
162157
@@ -291,9 +286,7 @@ async function generateActionJSStruct(actionInfo, dir) {
291286 '__' +
292287 actionInfo . interfaceName +
293288 '.js' ;
294- const generatedCode = removeEmptyLines (
295- dots . action ( { actionInfo : actionInfo } )
296- ) ;
289+ const generatedCode = dots . action ( { actionInfo : actionInfo } ) ;
297290 dir = path . join ( dir , actionInfo . pkgName ) ;
298291 const action = writeGeneratedCode ( dir , fileName , generatedCode ) ;
299292
0 commit comments