uniweb 0.7.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/src/commands/add.js +9 -1
- package/src/index.js +9 -1
- package/src/utils/scaffold.js +21 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "uniweb",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.3",
|
|
4
4
|
"description": "Create structured Vite + React sites with content/code separation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"tar": "^7.0.0",
|
|
44
44
|
"@uniweb/build": "0.7.2",
|
|
45
45
|
"@uniweb/core": "0.5.0",
|
|
46
|
-
"@uniweb/
|
|
47
|
-
"@uniweb/
|
|
46
|
+
"@uniweb/runtime": "0.6.0",
|
|
47
|
+
"@uniweb/kit": "0.6.0"
|
|
48
48
|
}
|
|
49
49
|
}
|
package/src/commands/add.js
CHANGED
|
@@ -14,7 +14,7 @@ import { readFile, writeFile } from 'node:fs/promises'
|
|
|
14
14
|
import { join, relative } from 'node:path'
|
|
15
15
|
import prompts from 'prompts'
|
|
16
16
|
import yaml from 'js-yaml'
|
|
17
|
-
import { scaffoldFoundation, scaffoldSite, applyContent } from '../utils/scaffold.js'
|
|
17
|
+
import { scaffoldFoundation, scaffoldSite, applyContent, mergeTemplateDependencies } from '../utils/scaffold.js'
|
|
18
18
|
import {
|
|
19
19
|
readWorkspaceConfig,
|
|
20
20
|
addWorkspaceGlob,
|
|
@@ -469,6 +469,14 @@ async function applyFromTemplate(templateId, packageType, targetDir, projectName
|
|
|
469
469
|
onProgress: (msg) => info(` ${msg}`),
|
|
470
470
|
})
|
|
471
471
|
|
|
472
|
+
// Merge template dependencies
|
|
473
|
+
if (metadata.dependencies) {
|
|
474
|
+
const deps = metadata.dependencies[packageType] || metadata.dependencies[match?.name]
|
|
475
|
+
if (deps) {
|
|
476
|
+
await mergeTemplateDependencies(join(targetDir, 'package.json'), deps)
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
|
|
472
480
|
// If site content applied, inform about expected section types
|
|
473
481
|
if (packageType === 'site' && metadata.components) {
|
|
474
482
|
log('')
|
package/src/index.js
CHANGED
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
parseTemplateId,
|
|
28
28
|
} from './templates/index.js'
|
|
29
29
|
import { validateTemplate } from './templates/validator.js'
|
|
30
|
-
import { scaffoldWorkspace, scaffoldFoundation, scaffoldSite, applyContent, applyStarter } from './utils/scaffold.js'
|
|
30
|
+
import { scaffoldWorkspace, scaffoldFoundation, scaffoldSite, applyContent, applyStarter, mergeTemplateDependencies } from './utils/scaffold.js'
|
|
31
31
|
|
|
32
32
|
// Colors for terminal output
|
|
33
33
|
const colors = {
|
|
@@ -202,6 +202,14 @@ async function createFromContentTemplate(projectDir, projectName, metadata, temp
|
|
|
202
202
|
onProgress?.(`Applying ${metadata.name} content to ${pkg.name}...`)
|
|
203
203
|
await applyContent(contentDir.dir, fullPath, { projectName }, { onProgress, onWarning })
|
|
204
204
|
}
|
|
205
|
+
|
|
206
|
+
// Merge template dependencies into package.json
|
|
207
|
+
if (metadata.dependencies) {
|
|
208
|
+
const deps = metadata.dependencies[pkg.name] || metadata.dependencies[pkg.type]
|
|
209
|
+
if (deps) {
|
|
210
|
+
await mergeTemplateDependencies(join(fullPath, 'package.json'), deps)
|
|
211
|
+
}
|
|
212
|
+
}
|
|
205
213
|
}
|
|
206
214
|
|
|
207
215
|
success(`Created project: ${projectName}`)
|
package/src/utils/scaffold.js
CHANGED
|
@@ -173,3 +173,24 @@ export async function applyStarter(projectDir, context, options = {}) {
|
|
|
173
173
|
const siteTargetDir = join(projectDir, siteDir)
|
|
174
174
|
await applyContent(siteContentDir, siteTargetDir, context, options)
|
|
175
175
|
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Merge additional dependencies from a content template into a scaffolded package.json
|
|
179
|
+
*
|
|
180
|
+
* Reads the package.json at the given path, adds any deps not already present
|
|
181
|
+
* (in either dependencies or devDependencies), and writes it back.
|
|
182
|
+
*
|
|
183
|
+
* @param {string} packageJsonPath - Absolute path to package.json
|
|
184
|
+
* @param {Object} deps - Dependencies to merge (name → version)
|
|
185
|
+
*/
|
|
186
|
+
export async function mergeTemplateDependencies(packageJsonPath, deps) {
|
|
187
|
+
if (!deps || Object.keys(deps).length === 0) return
|
|
188
|
+
const pkg = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'))
|
|
189
|
+
if (!pkg.dependencies) pkg.dependencies = {}
|
|
190
|
+
for (const [name, version] of Object.entries(deps)) {
|
|
191
|
+
if (!pkg.dependencies[name] && !pkg.devDependencies?.[name]) {
|
|
192
|
+
pkg.dependencies[name] = version
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
await fs.writeFile(packageJsonPath, JSON.stringify(pkg, null, 2) + '\n')
|
|
196
|
+
}
|