@@ -2,6 +2,9 @@ import * as fs from 'fs';
22import { sync as mkdirpSync } from 'mkdirp' ;
33import extractCLDRData from 'formatjs-extract-cldr-data' ;
44import serialize from 'serialize-javascript' ;
5+ import { transform } from 'babel' ;
6+ import browserify from 'browserify' ;
7+ import uglifyify from 'uglifyify' ;
58
69const DEFAULT_LOCALE = 'en' ;
710
@@ -10,11 +13,11 @@ const cldrData = extractCLDRData({
1013 relativeFields : true ,
1114} ) ;
1215
13- const dataByLocale = new Map (
16+ const cldrDataByLocale = new Map (
1417 Object . keys ( cldrData ) . map ( ( locale ) => [ locale , cldrData [ locale ] ] )
1518) ;
1619
17- const dataByLang = [ ...dataByLocale ] . reduce ( ( map , [ locale , data ] ) => {
20+ const cldrDataByLang = [ ...cldrDataByLocale ] . reduce ( ( map , [ locale , data ] ) => {
1821 let [ lang ] = locale . split ( '-' ) ;
1922 let langData = map . get ( lang ) || [ ] ;
2023 return map . set ( lang , langData . concat ( data ) ) ;
@@ -28,28 +31,39 @@ export default ${serialize(localeData)};
2831 ) ;
2932}
3033
31- function createDistDataScript ( localeData ) {
32- return (
33- `// GENERATED FILE
34- ReactIntl.addLocaleData(${ serialize ( localeData ) } );
35- `
36- ) ;
34+ function throwIfError ( error ) {
35+ if ( error ) {
36+ throw error ;
37+ }
3738}
3839
3940// -----------------------------------------------------------------------------
4041
41- mkdirpSync ( 'src/locale-data/' ) ;
4242mkdirpSync ( 'dist/locale-data/' ) ;
43+ mkdirpSync ( 'lib/locale-data/' ) ;
44+ mkdirpSync ( 'src/locale-data/' ) ;
4345
44- fs . writeFileSync ( 'src/en.js' ,
45- createDataModule ( dataByLocale . get ( DEFAULT_LOCALE ) )
46+ fs . writeFile ( 'src/en.js' ,
47+ createDataModule ( cldrDataByLocale . get ( DEFAULT_LOCALE ) ) ,
48+ throwIfError
4649) ;
4750
48- fs . writeFileSync ( 'src/locale-data/index.js' ,
49- createDataModule ( [ ...dataByLocale . values ( ) ] )
50- ) ;
51+ let allData = createDataModule ( [ ...cldrDataByLocale . values ( ) ] ) ;
52+ fs . writeFile ( 'src/locale-data/index.js' , allData , throwIfError ) ;
53+ fs . writeFile ( 'lib/locale-data/index.js' , transform ( allData ) . code , throwIfError ) ;
54+
55+ cldrDataByLang . forEach ( ( cldrData , lang ) => {
56+ let data = createDataModule ( cldrData ) ;
57+
58+ fs . writeFile ( `src/locale-data/${ lang } .js` , data , throwIfError ) ;
59+ fs . writeFile ( `lib/locale-data/${ lang } .js` , transform ( data ) . code , ( err ) => {
60+ throwIfError ( err ) ;
5161
52- dataByLang . forEach ( ( data , lang ) => {
53- fs . writeFileSync ( `src/locale-data/${ lang } .js` , createDataModule ( data ) ) ;
54- fs . writeFileSync ( `dist/locale-data/${ lang } .js` , createDistDataScript ( data ) ) ;
62+ browserify ( { standalone : `ReactIntlLocaleData.${ lang } ` } )
63+ . add ( `lib/locale-data/${ lang } .js` )
64+ . transform ( uglifyify )
65+ . bundle ( )
66+ . on ( 'error' , throwIfError )
67+ . pipe ( fs . createWriteStream ( `dist/locale-data/${ lang } .js` ) ) ;
68+ } ) ;
5569} ) ;
0 commit comments