@@ -19,6 +19,7 @@ const { generateLiveEditing } = require('igniteui-live-editing');
1919const argv = yargs ( hideBin ( process . argv ) ) . parse ( ) ;
2020
2121const submodule = "igniteui-live-editing-samples" ;
22+ const mainPkgDevDeps = JSON . parse ( fs . readFileSync ( path . join ( __dirname , 'package.json' ) , 'utf8' ) ) . devDependencies ;
2223
2324gulp . task ( "generate-live-editing" , async ( ) => {
2425 var appDv = argv . appDv !== undefined && argv . appDv . toLowerCase ( ) . trim ( ) === "true" ;
@@ -54,6 +55,38 @@ gulp.task("generate-live-editing", async () => {
5455 additionalSharedStyles : [ "_variables.scss" , "_app-layout.scss" ]
5556 } )
5657 await generateLiveEditing ( liveEditingOptions ) ;
58+
59+ const sharedJsonPath = path . resolve ( liveEditingOptions . samplesDir , 'shared.json' ) ;
60+ if ( fs . existsSync ( sharedJsonPath ) ) {
61+ const sharedJson = JSON . parse ( fs . readFileSync ( sharedJsonPath , 'utf8' ) ) ;
62+ const stylesFile = sharedJson . files && sharedJson . files . find ( f => f . path === 'src/styles.scss' ) ;
63+ if ( stylesFile ) {
64+ const stylesWithTailwind = stylesFile . content . includes ( '@import "tailwindcss"' )
65+ ? stylesFile . content
66+ : stylesFile . content . replace ( / ( (?: @ u s e [ ^ \n ] + \n ) + ) / , '$1@import "tailwindcss";\n' ) ;
67+ stylesFile . content = stylesFile . content . replace ( / @ i m p o r t [ " ' ] t a i l w i n d c s s [ " ' ] ; ? \r ? \n ? / g, '' ) ;
68+ fs . writeFileSync ( sharedJsonPath , JSON . stringify ( sharedJson ) ) ;
69+
70+ const samplesDir = liveEditingOptions . samplesDir ;
71+ fs . readdirSync ( samplesDir )
72+ . filter ( f => f . endsWith ( '.json' ) && f !== 'shared.json' && f !== 'meta.json' )
73+ . forEach ( f => {
74+ const samplePath = path . join ( samplesDir , f ) ;
75+ const sample = JSON . parse ( fs . readFileSync ( samplePath , 'utf8' ) ) ;
76+ const deps = JSON . parse ( sample . sampleDependencies || '{}' ) ;
77+ if ( deps [ 'tailwindcss' ] ) {
78+ const existing = sample . sampleFiles . findIndex ( sf => sf . path === 'src/styles.scss' ) ;
79+ const styleEntry = { path : 'src/styles.scss' , hasRelativeAssetsUrls : false , content : stylesWithTailwind } ;
80+ if ( existing !== - 1 ) {
81+ sample . sampleFiles [ existing ] = styleEntry ;
82+ } else {
83+ sample . sampleFiles . push ( styleEntry ) ;
84+ }
85+ fs . writeFileSync ( samplePath , JSON . stringify ( sample ) ) ;
86+ }
87+ } ) ;
88+ }
89+ }
5790} ) ;
5891
5992gulp . task ( "overwrite-package-json" , ( done ) => {
@@ -116,8 +149,15 @@ const processApp = (projectPath, dest, directoriesToExclude) => {
116149 "path" : "package.json" ,
117150 "hasRelativeAssetsUrls" : false ,
118151 "content" : JSON . stringify ( {
119- "dependencies" : JSON . parse ( jsonObj . sampleDependencies ) ,
120- "devDependencies" : sharedJson . devDependencies
152+ "name" : "example-app" ,
153+ "version" : "0.0.0" ,
154+ "scripts" : {
155+ "ng" : "ng" ,
156+ "start" : "node --max_old_space_size=12192 node_modules/@angular/cli/bin/ng serve" ,
157+ "build" : "node --max_old_space_size=12192 node_modules/@angular/cli/bin/ng build"
158+ } ,
159+ "dependencies" : Object . fromEntries ( Object . entries ( JSON . parse ( jsonObj . sampleDependencies ) ) . map ( ( [ pkg , ver ] ) => [ pkg , / ^ [ \^ ~ > < = * ] / . test ( ver ) ? ver : '^' + ver ] ) ) ,
160+ "devDependencies" : Object . fromEntries ( Object . keys ( sharedJson . devDependencies ) . map ( pkg => [ pkg , mainPkgDevDeps [ pkg ] || sharedJson . devDependencies [ pkg ] ] ) )
121161 } , null , 2 )
122162 }
123163 additionals . push ( packageJson ) ;
@@ -153,6 +193,14 @@ const processApp = (projectPath, dest, directoriesToExclude) => {
153193 } else {
154194 sampleContent = sampleFile . content ;
155195 }
196+ if ( sampleFile . path === 'src/styles.scss' ) {
197+ const deps = JSON . parse ( jsonObj . sampleDependencies ) ;
198+ if ( deps [ 'tailwindcss' ] && ! sampleContent . includes ( '@import "tailwindcss"' ) ) {
199+ sampleContent = sampleContent . replace ( / ( (?: @ u s e [ ^ \n ] + \n ) + ) / , '$1@import "tailwindcss";\n' ) ;
200+ } else if ( ! deps [ 'tailwindcss' ] ) {
201+ sampleContent = sampleContent . replace ( / @ i m p o r t [ " ' ] t a i l w i n d c s s [ " ' ] ; ? \r ? \n ? / g, '' ) ;
202+ }
203+ }
156204 const paths = sampleFile . path . replace ( "./" , "" ) . split ( "/" ) ;
157205 let tempPath = "" ;
158206 paths . forEach ( p => {
0 commit comments