Skip to content

Commit c3dfaaa

Browse files
committed
fix(live-editing): improve generated standalone and styles handling
1 parent 5d4c8ca commit c3dfaaa

3 files changed

Lines changed: 89 additions & 7 deletions

File tree

gulpfile.js

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const { generateLiveEditing } = require('igniteui-live-editing');
1919
const argv = yargs(hideBin(process.argv)).parse();
2020

2121
const submodule = "igniteui-live-editing-samples";
22+
const mainPkgDevDeps = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json'), 'utf8')).devDependencies;
2223

2324
gulp.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(/((?:@use [^\n]+\n)+)/, '$1@import "tailwindcss";\n');
67+
stylesFile.content = stylesFile.content.replace(/@import ["']tailwindcss["'];?\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

5992
gulp.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(/((?:@use [^\n]+\n)+)/, '$1@import "tailwindcss";\n');
200+
} else if (!deps['tailwindcss']) {
201+
sampleContent = sampleContent.replace(/@import ["']tailwindcss["'];?\r?\n?/g, '');
202+
}
203+
}
156204
const paths = sampleFile.path.replace("./", "").split("/");
157205
let tempPath = "";
158206
paths.forEach(p => {

package-lock.json

Lines changed: 38 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@
8181
"igniteui-dockmanager": "^1.17.0",
8282
"igniteui-grid-lite": "^0.6.0",
8383
"igniteui-i18n-resources": "^1.0.2",
84-
"igniteui-live-editing": "^3.4.0",
84+
"igniteui-live-editing": "file:../../igniteui-live-editing-0.0.1.tgz",
8585
"igniteui-webcomponents": "^7.0.0",
8686
"marked": "^17.0.1",
8787
"marked-shiki": "^1.2.1",

0 commit comments

Comments
 (0)