valence-cli 1.2.7 → 1.3.0
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/README.md +9 -2
- package/README.original.md +9 -20
- package/dist/README.md +133 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +55 -1
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +115 -1
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/codegen.js +42 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +65 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/features/assets.d.ts +6 -0
- package/dist/commands/features/assets.d.ts.map +1 -0
- package/dist/commands/features/assets.js +113 -0
- package/dist/commands/features/assets.js.map +1 -0
- package/dist/commands/features/multiplayer.d.ts +2 -0
- package/dist/commands/features/multiplayer.d.ts.map +1 -0
- package/dist/commands/features/multiplayer.js +81 -0
- package/dist/commands/features/multiplayer.js.map +1 -0
- package/dist/commands/features/native.d.ts +2 -0
- package/dist/commands/features/native.d.ts.map +1 -0
- package/dist/commands/features/native.js +83 -0
- package/dist/commands/features/native.js.map +1 -0
- package/dist/commands/features/physics.d.ts +2 -0
- package/dist/commands/features/physics.d.ts.map +1 -0
- package/dist/commands/features/physics.js +44 -0
- package/dist/commands/features/physics.js.map +1 -0
- package/dist/commands/features/pipeline.d.ts +2 -0
- package/dist/commands/features/pipeline.d.ts.map +1 -0
- package/dist/commands/features/pipeline.js +28 -0
- package/dist/commands/features/pipeline.js.map +1 -0
- package/dist/commands/features/tailwind.d.ts +2 -0
- package/dist/commands/features/tailwind.d.ts.map +1 -0
- package/dist/commands/features/tailwind.js +46 -0
- package/dist/commands/features/tailwind.js.map +1 -0
- package/dist/commands/generate.js +186 -1
- package/dist/commands/lifecycle.d.ts.map +1 -1
- package/dist/commands/lifecycle.js +45 -1
- package/dist/commands/lifecycle.js.map +1 -1
- package/dist/commands/new-helpers.d.ts +11 -0
- package/dist/commands/new-helpers.d.ts.map +1 -0
- package/dist/commands/new-helpers.js +109 -0
- package/dist/commands/new-helpers.js.map +1 -0
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +153 -1
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/publish.js +86 -1
- package/dist/commands/template.d.ts.map +1 -1
- package/dist/commands/template.js +259 -1
- package/dist/commands/template.js.map +1 -1
- package/dist/commands/verify.d.ts +2 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +80 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/constants/versions.d.ts +38 -0
- package/dist/constants/versions.d.ts.map +1 -0
- package/dist/constants/versions.js +38 -0
- package/dist/constants/versions.js.map +1 -0
- package/dist/index.js +106 -1
- package/dist/index.js.map +1 -1
- package/dist/templates/angular.js +376 -1
- package/dist/templates/components.js +54 -1
- package/dist/templates/config.js +26 -1
- package/dist/templates/electron.js +124 -1
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +7 -1
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/multiplayer.d.ts +7 -0
- package/dist/templates/multiplayer.d.ts.map +1 -0
- package/dist/templates/multiplayer.js +151 -0
- package/dist/templates/multiplayer.js.map +1 -0
- package/dist/templates/native.d.ts +4 -0
- package/dist/templates/native.d.ts.map +1 -0
- package/dist/templates/native.js +40 -0
- package/dist/templates/native.js.map +1 -0
- package/dist/templates.js +2 -1
- package/dist/utils/ast.d.ts +20 -0
- package/dist/utils/ast.d.ts.map +1 -0
- package/dist/utils/ast.js +95 -0
- package/dist/utils/ast.js.map +1 -0
- package/dist/utils/engine.d.ts +9 -0
- package/dist/utils/engine.d.ts.map +1 -0
- package/dist/utils/engine.js +43 -0
- package/dist/utils/engine.js.map +1 -0
- package/dist/utils/logger.js +65 -1
- package/dist/utils/pipeline.d.ts +2 -0
- package/dist/utils/pipeline.d.ts.map +1 -0
- package/dist/utils/pipeline.js +69 -0
- package/dist/utils/pipeline.js.map +1 -0
- package/dist/utils/update.js +33 -1
- package/dist/utils/validation.js +12 -1
- package/package.json +3 -2
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import { runStage, execWithScrollingLogger } from '../../utils/logger.js';
|
|
5
|
+
import { ensureNamedImport } from '../../utils/ast.js';
|
|
6
|
+
import { getEngineService, insertInInitEngine } from '../../utils/engine.js';
|
|
7
|
+
import { VERSIONS } from '../../constants/versions.js';
|
|
8
|
+
import { serverPackageJson, serverTsConfig, serverIndex, roomTemplate, schemaTemplate, networkServiceTemplate } from '../../templates.js';
|
|
9
|
+
export async function addMultiplayer(cwd) {
|
|
10
|
+
console.log(chalk.cyan('\nAdding Multiplayer Support (Colyseus)...\n'));
|
|
11
|
+
// 1. Scaffold Server Directory
|
|
12
|
+
await runStage('Scaffolding Server', async () => {
|
|
13
|
+
const serverDir = path.join(cwd, 'server');
|
|
14
|
+
if (!await fs.pathExists(serverDir)) {
|
|
15
|
+
await fs.mkdir(serverDir);
|
|
16
|
+
await fs.mkdir(path.join(serverDir, 'src'));
|
|
17
|
+
await fs.mkdir(path.join(serverDir, 'src', 'rooms'));
|
|
18
|
+
await fs.mkdir(path.join(serverDir, 'src', 'schema'));
|
|
19
|
+
}
|
|
20
|
+
// Write Server Files
|
|
21
|
+
await fs.writeFile(path.join(serverDir, 'package.json'), serverPackageJson.trim());
|
|
22
|
+
await fs.writeFile(path.join(serverDir, 'tsconfig.json'), serverTsConfig.trim());
|
|
23
|
+
await fs.writeFile(path.join(serverDir, 'src', 'index.ts'), serverIndex.trim());
|
|
24
|
+
await fs.writeFile(path.join(serverDir, 'src', 'rooms', 'GameRoom.ts'), roomTemplate.trim());
|
|
25
|
+
await fs.writeFile(path.join(serverDir, 'src', 'schema', 'GameState.ts'), schemaTemplate.trim());
|
|
26
|
+
return 'Server files created';
|
|
27
|
+
});
|
|
28
|
+
// 2. Install Server Dependencies
|
|
29
|
+
await runStage('Installing Server Deps', async (spinner) => {
|
|
30
|
+
const serverDir = path.join(cwd, 'server');
|
|
31
|
+
// We use 'npm install' inside the server directory
|
|
32
|
+
await execWithScrollingLogger(spinner, 'npm', ['install'], { cwd: serverDir, title: 'Server npm install...', rows: 5 });
|
|
33
|
+
return 'Server dependencies installed';
|
|
34
|
+
});
|
|
35
|
+
// 3. Install Client Dependencies
|
|
36
|
+
await runStage('Installing Client Deps', async (spinner) => {
|
|
37
|
+
await execWithScrollingLogger(spinner, 'npm', ['install', `colyseus.js@${VERSIONS.libs.colyseus}`], { title: 'Client npm install...', rows: 5 });
|
|
38
|
+
return 'colyseus.js installed';
|
|
39
|
+
});
|
|
40
|
+
// 4. Create Angular Service
|
|
41
|
+
await runStage('Creating Network Service', async () => {
|
|
42
|
+
const servicePath = path.join(cwd, 'src/app/core/network.service.ts');
|
|
43
|
+
await fs.ensureDir(path.dirname(servicePath)); // Ensure core exists
|
|
44
|
+
if (!await fs.pathExists(servicePath)) {
|
|
45
|
+
await fs.writeFile(servicePath, networkServiceTemplate.trim());
|
|
46
|
+
}
|
|
47
|
+
return 'NetworkService created';
|
|
48
|
+
});
|
|
49
|
+
// 5. Inject into Engine
|
|
50
|
+
await runStage('Injecting Network Logic', async () => {
|
|
51
|
+
const { sourceFile, classDecl } = await getEngineService(cwd);
|
|
52
|
+
// Import NetworkService
|
|
53
|
+
ensureNamedImport(sourceFile, './core/network.service', 'NetworkService');
|
|
54
|
+
// Add to constructor
|
|
55
|
+
const constructor = classDecl.getConstructors()[0] || classDecl.addConstructor({});
|
|
56
|
+
const param = constructor.getParameter('networkService');
|
|
57
|
+
if (!param) {
|
|
58
|
+
constructor.addParameter({
|
|
59
|
+
name: 'networkService',
|
|
60
|
+
type: 'NetworkService',
|
|
61
|
+
scope: 'private'
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
insertInInitEngine(classDecl, `
|
|
65
|
+
try {
|
|
66
|
+
const room = await this.networkService.connect('game_room');
|
|
67
|
+
console.log("Connected to room:", room.roomId);
|
|
68
|
+
|
|
69
|
+
room.onMessage("hello", (message) => {
|
|
70
|
+
console.log("Server says:", message);
|
|
71
|
+
});
|
|
72
|
+
} catch {
|
|
73
|
+
console.warn("Multiplayer connection failed. Is the server running? (valence start)");
|
|
74
|
+
}`, 'after-scene');
|
|
75
|
+
await sourceFile.save();
|
|
76
|
+
return 'Engine connected to NetworkService';
|
|
77
|
+
});
|
|
78
|
+
console.log(chalk.bold.green('\n✓ Multiplayer Ready!'));
|
|
79
|
+
console.log(chalk.gray(' Run "valence start" to launch both client and server.\n'));
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=multiplayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiplayer.js","sourceRoot":"","sources":["../../../src/commands/features/multiplayer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/commands/features/native.ts"],"names":[],"mappings":"AAWA,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,iBAkF1C"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import { execa } from 'execa';
|
|
5
|
+
import { runStage, execWithScrollingLogger } from '../../utils/logger.js';
|
|
6
|
+
import { nativePackageJson, nativeCargoToml, nativeLibRs } from '../../templates.js';
|
|
7
|
+
export async function addNative(cwd) {
|
|
8
|
+
console.log(chalk.cyan('\nAdding Native Rust Module (Neon)...\n'));
|
|
9
|
+
// Check Cargo
|
|
10
|
+
try {
|
|
11
|
+
await execa('cargo', ['--version']);
|
|
12
|
+
}
|
|
13
|
+
catch (e) {
|
|
14
|
+
throw new Error('Rust/Cargo is not installed or not in PATH. Please install Rust: https://rustup.rs/');
|
|
15
|
+
}
|
|
16
|
+
// 1. Scaffold Native Directory
|
|
17
|
+
await runStage('Scaffolding Native Module', async () => {
|
|
18
|
+
const nativeDir = path.join(cwd, 'native');
|
|
19
|
+
if (!await fs.pathExists(nativeDir)) {
|
|
20
|
+
await fs.mkdir(nativeDir);
|
|
21
|
+
await fs.mkdir(path.join(nativeDir, 'src'));
|
|
22
|
+
}
|
|
23
|
+
// Write Files
|
|
24
|
+
await fs.writeFile(path.join(nativeDir, 'package.json'), nativePackageJson.trim());
|
|
25
|
+
await fs.writeFile(path.join(nativeDir, 'Cargo.toml'), nativeCargoToml.trim());
|
|
26
|
+
await fs.writeFile(path.join(nativeDir, 'src', 'lib.rs'), nativeLibRs.trim());
|
|
27
|
+
return 'Native files created';
|
|
28
|
+
});
|
|
29
|
+
// 2. Install Deps - Skipped (No npm deps needed for direct cargo build)
|
|
30
|
+
/*
|
|
31
|
+
await runStage('Installing Native Deps', async (spinner) => {
|
|
32
|
+
const nativeDir = path.join(cwd, 'native');
|
|
33
|
+
await execWithScrollingLogger(spinner, 'npm', ['install'], { cwd: nativeDir, title: 'Installing neon...', rows: 5 });
|
|
34
|
+
return 'Neon installed';
|
|
35
|
+
});
|
|
36
|
+
*/
|
|
37
|
+
await runStage('Linking Native Module', async (spinner) => {
|
|
38
|
+
const rootPkgPath = path.join(cwd, 'package.json');
|
|
39
|
+
const rootPkg = await fs.readJSON(rootPkgPath);
|
|
40
|
+
rootPkg.dependencies = rootPkg.dependencies || {};
|
|
41
|
+
rootPkg.dependencies['native'] = 'file:native';
|
|
42
|
+
await fs.writeJSON(rootPkgPath, rootPkg, { spaces: 2 });
|
|
43
|
+
// Manually link to avoid npm install gyp errors
|
|
44
|
+
const target = path.join(cwd, 'node_modules', 'native');
|
|
45
|
+
await fs.ensureDir(path.join(cwd, 'node_modules'));
|
|
46
|
+
if (await fs.pathExists(target))
|
|
47
|
+
await fs.remove(target);
|
|
48
|
+
// Use junction for Windows compatibility
|
|
49
|
+
await fs.ensureSymlink(path.join(cwd, 'native'), target, 'junction');
|
|
50
|
+
return 'Native module linked';
|
|
51
|
+
});
|
|
52
|
+
// 4. First Build
|
|
53
|
+
await runStage('Building Native Module', async (spinner) => {
|
|
54
|
+
const nativeDir = path.join(cwd, 'native');
|
|
55
|
+
try {
|
|
56
|
+
// Direct cargo build to avoid npm/neon spawning issues
|
|
57
|
+
await execWithScrollingLogger(spinner, 'cargo', ['build', '--release'], { cwd: nativeDir, title: 'Compiling Rust...', rows: 5 });
|
|
58
|
+
// Move artifact
|
|
59
|
+
const target = process.platform === 'win32' ? 'native.dll' : 'libnative.so'; // Cargo defaults
|
|
60
|
+
let builtFile = path.join(nativeDir, 'target', 'release', 'native.dll');
|
|
61
|
+
if (process.platform !== 'win32')
|
|
62
|
+
builtFile = path.join(nativeDir, 'target', 'release', 'libnative.so');
|
|
63
|
+
if (process.platform === 'darwin')
|
|
64
|
+
builtFile = path.join(nativeDir, 'target', 'release', 'libnative.dylib');
|
|
65
|
+
if (await fs.pathExists(builtFile)) {
|
|
66
|
+
await fs.copy(builtFile, path.join(nativeDir, 'index.node'), { overwrite: true });
|
|
67
|
+
return 'Compiled successfully';
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
throw new Error(`Build artifact not found at ${builtFile}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
console.warn(chalk.yellow('\n⚠ Native build failed (Missing Prerequisites?). Continuing...'));
|
|
75
|
+
// Create dummy file to prevent resolve errors
|
|
76
|
+
await fs.ensureFile(path.join(nativeDir, 'index.node'));
|
|
77
|
+
return 'Scaffolding complete (Build skipped)';
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
console.log(chalk.bold.green('\n✓ Native Module Ready!'));
|
|
81
|
+
console.log(chalk.gray(' Import it in Electron Main: require("../../native")\n'));
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../../src/commands/features/native.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physics.d.ts","sourceRoot":"","sources":["../../../src/commands/features/physics.ts"],"names":[],"mappings":"AAQA,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,iBA0C3C"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import { runStage, execWithScrollingLogger } from '../../utils/logger.js';
|
|
5
|
+
import { ensureDefaultImport, ensureNamedImport, ensureClassProperty } from '../../utils/ast.js';
|
|
6
|
+
import { getEngineService, insertInInitEngine } from '../../utils/engine.js';
|
|
7
|
+
import { VERSIONS } from '../../constants/versions.js';
|
|
8
|
+
export async function addPhysics(cwd) {
|
|
9
|
+
console.log(chalk.cyan('\nAdding Havok Physics Support...\n'));
|
|
10
|
+
await runStage('Installing Havok Engine', async (spinner) => {
|
|
11
|
+
await execWithScrollingLogger(spinner, 'npm', ['install', `@babylonjs/havok@${VERSIONS.babylon.havok}`], { title: 'Installing Havok...', rows: 5 });
|
|
12
|
+
return 'Havok installed';
|
|
13
|
+
});
|
|
14
|
+
await runStage('Updating Assets Config', async () => {
|
|
15
|
+
const angularJsonPath = path.join(cwd, 'angular.json');
|
|
16
|
+
const angularJson = await fs.readJson(angularJsonPath);
|
|
17
|
+
const projectName = Object.keys(angularJson.projects)[0];
|
|
18
|
+
const assets = angularJson.projects[projectName].architect.build.options.assets;
|
|
19
|
+
const wasmEntry = {
|
|
20
|
+
"glob": "**/*.wasm",
|
|
21
|
+
"input": "node_modules/@babylonjs/havok/lib/esm",
|
|
22
|
+
"output": "assets"
|
|
23
|
+
};
|
|
24
|
+
const exists = assets.some((a) => a.input === wasmEntry.input);
|
|
25
|
+
if (!exists) {
|
|
26
|
+
assets.push(wasmEntry);
|
|
27
|
+
await fs.writeFile(angularJsonPath, JSON.stringify(angularJson, null, 2));
|
|
28
|
+
}
|
|
29
|
+
return 'angular.json updated';
|
|
30
|
+
});
|
|
31
|
+
await runStage('Injecting Engine Logic', async () => {
|
|
32
|
+
const { sourceFile, classDecl } = await getEngineService(cwd);
|
|
33
|
+
ensureDefaultImport(sourceFile, '@babylonjs/havok', 'HavokPhysics');
|
|
34
|
+
ensureNamedImport(sourceFile, 'babylonjs', 'HavokPlugin');
|
|
35
|
+
ensureClassProperty(classDecl, 'havokPlugin?', 'HavokPlugin');
|
|
36
|
+
insertInInitEngine(classDecl, `const havokInstance = await HavokPhysics();\n this.havokPlugin = new HavokPlugin(true, havokInstance);`, 'before-scene');
|
|
37
|
+
// Post init: enable physics
|
|
38
|
+
insertInInitEngine(classDecl, `if (this.scene && this.havokPlugin) {\n this.scene.enablePhysics(new Vector3(0, -9.81, 0), this.havokPlugin);\n }`, 'after-scene');
|
|
39
|
+
await sourceFile.save();
|
|
40
|
+
return 'Physics logic injected';
|
|
41
|
+
});
|
|
42
|
+
console.log(chalk.bold.green('\n✓ Physics Ready!'));
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=physics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physics.js","sourceRoot":"","sources":["../../../src/commands/features/physics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/commands/features/pipeline.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,iBAwB5C"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import { runStage, execWithScrollingLogger } from '../../utils/logger.js';
|
|
5
|
+
import { VERSIONS } from '../../constants/versions.js';
|
|
6
|
+
export async function addPipeline(cwd) {
|
|
7
|
+
console.log(chalk.cyan('\nAdding Asset Pipeline...'));
|
|
8
|
+
await runStage('Installing Optimization Tools', async (spinner) => {
|
|
9
|
+
// Installing sharp as dev dependency
|
|
10
|
+
await execWithScrollingLogger(spinner, 'npm', ['install', '-D', `sharp@${VERSIONS.tools.sharp}`], { title: 'Installing sharp...', rows: 5 });
|
|
11
|
+
return 'Sharp installed';
|
|
12
|
+
});
|
|
13
|
+
await runStage('Configuring Pipeline', async () => {
|
|
14
|
+
const valenceConfigPath = path.join(cwd, '.valence/valence.json');
|
|
15
|
+
if (await fs.pathExists(valenceConfigPath)) {
|
|
16
|
+
const config = await fs.readJson(valenceConfigPath);
|
|
17
|
+
config.pipeline = {
|
|
18
|
+
enabled: true,
|
|
19
|
+
assets: ['src/assets']
|
|
20
|
+
};
|
|
21
|
+
await fs.writeJson(valenceConfigPath, config, { spaces: 2 });
|
|
22
|
+
}
|
|
23
|
+
return 'Pipeline enabled in valence.json';
|
|
24
|
+
});
|
|
25
|
+
console.log(chalk.bold.green('\n✓ Asset Pipeline Ready!'));
|
|
26
|
+
console.log(chalk.gray(' Assets will be optimized automatically during "valence build".\n'));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/commands/features/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW;IACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAEtD,MAAM,QAAQ,CAAC,+BAA+B,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC9D,qCAAqC;QACrC,MAAM,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7I,OAAO,iBAAiB,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;QAClE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YACpD,MAAM,CAAC,QAAQ,GAAG;gBACd,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,CAAC,YAAY,CAAC;aACzB,CAAC;YACF,MAAM,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,kCAAkC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC,CAAC;AAClG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tailwind.d.ts","sourceRoot":"","sources":["../../../src/commands/features/tailwind.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,iBA4C5C"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import { runStage, execWithScrollingLogger } from '../../utils/logger.js';
|
|
5
|
+
import { VERSIONS } from '../../constants/versions.js';
|
|
6
|
+
export async function addTailwind(cwd) {
|
|
7
|
+
console.log(chalk.cyan('\nAdding TailwindCSS...\n'));
|
|
8
|
+
await runStage('Installing Dependencies', async (spinner) => {
|
|
9
|
+
await execWithScrollingLogger(spinner, 'npm', ['install', '-D',
|
|
10
|
+
`tailwindcss@${VERSIONS.tools.tailwindcss}`,
|
|
11
|
+
`postcss@${VERSIONS.tools.postcss}`,
|
|
12
|
+
`autoprefixer@${VERSIONS.tools.autoprefixer}`
|
|
13
|
+
], { title: 'Installing...', rows: 5 });
|
|
14
|
+
return 'Packages installed';
|
|
15
|
+
});
|
|
16
|
+
await runStage('Initializing Config', async (spinner) => {
|
|
17
|
+
await execWithScrollingLogger(spinner, 'npx', ['tailwindcss', 'init'], { title: 'Init...', rows: 5 });
|
|
18
|
+
// Update tailwind.config.js
|
|
19
|
+
const configPath = path.join(cwd, 'tailwind.config.js');
|
|
20
|
+
const configParams = `/** @type {import('tailwindcss').Config} */
|
|
21
|
+
module.exports = {
|
|
22
|
+
content: [
|
|
23
|
+
"./src/**/*.{html,ts}",
|
|
24
|
+
],
|
|
25
|
+
theme: {
|
|
26
|
+
extend: {},
|
|
27
|
+
},
|
|
28
|
+
plugins: [],
|
|
29
|
+
}`;
|
|
30
|
+
await fs.writeFile(configPath, configParams);
|
|
31
|
+
return 'Config verified';
|
|
32
|
+
});
|
|
33
|
+
await runStage('Updating Styles', async () => {
|
|
34
|
+
const stylesPath = path.join(cwd, 'src/styles.scss');
|
|
35
|
+
if (await fs.pathExists(stylesPath)) {
|
|
36
|
+
let content = await fs.readFile(stylesPath, 'utf8');
|
|
37
|
+
const directives = `@tailwind base;\n@tailwind components;\n@tailwind utilities;\n`;
|
|
38
|
+
if (!content.includes('@tailwind base')) {
|
|
39
|
+
await fs.writeFile(stylesPath, directives + content);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return 'styles.scss updated';
|
|
43
|
+
});
|
|
44
|
+
console.log(chalk.bold.green('\n✓ TailwindCSS Ready!'));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=tailwind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tailwind.js","sourceRoot":"","sources":["../../../src/commands/features/tailwind.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW;IACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAErD,MAAM,QAAQ,CAAC,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACxD,MAAM,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI;YAC1D,eAAe,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE;YAC3C,WAAW,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE;YACnC,gBAAgB,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE;SAChD,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxC,OAAO,oBAAoB,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpD,MAAM,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAEtG,4BAA4B;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG;;;;;;;;;EAS3B,CAAC;QACK,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC7C,OAAO,iBAAiB,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACrD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,gEAAgE,CAAC;YACpF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACtC,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;YACzD,CAAC;QACL,CAAC;QACD,OAAO,qBAAqB,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAC5D,CAAC"}
|