@linyjs/cli 0.0.2 → 0.0.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/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +57 -6
- package/dist/commands/dev.js.map +1 -1
- package/dist/index.js +0 -0
- package/package.json +3 -2
- package/src/commands/dev.ts +66 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAwCD;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,iBA2IlD"}
|
package/dist/commands/dev.js
CHANGED
|
@@ -8,12 +8,46 @@ import path from 'path';
|
|
|
8
8
|
import chalk from 'chalk';
|
|
9
9
|
import ora from 'ora';
|
|
10
10
|
import { packPlugin } from './pack.js';
|
|
11
|
+
/**
|
|
12
|
+
* Load .env file and return environment variables
|
|
13
|
+
*/
|
|
14
|
+
function loadEnvConfig(projectRoot) {
|
|
15
|
+
const envPath = path.join(projectRoot, '.env');
|
|
16
|
+
if (!fs.existsSync(envPath)) {
|
|
17
|
+
// Try parent directories (monorepo structure)
|
|
18
|
+
const parentEnvPath = path.join(projectRoot, '..', '.env');
|
|
19
|
+
if (fs.existsSync(parentEnvPath)) {
|
|
20
|
+
return parseEnvFile(parentEnvPath);
|
|
21
|
+
}
|
|
22
|
+
return {};
|
|
23
|
+
}
|
|
24
|
+
return parseEnvFile(envPath);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Parse .env file content
|
|
28
|
+
*/
|
|
29
|
+
function parseEnvFile(envPath) {
|
|
30
|
+
const content = fs.readFileSync(envPath, 'utf-8');
|
|
31
|
+
const config = {};
|
|
32
|
+
content.split('\n').forEach(line => {
|
|
33
|
+
line = line.trim();
|
|
34
|
+
if (line && !line.startsWith('#')) {
|
|
35
|
+
const [key, ...valueParts] = line.split('=');
|
|
36
|
+
if (key && valueParts.length > 0) {
|
|
37
|
+
config[key.trim()] = valueParts.join('=').trim();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return config;
|
|
42
|
+
}
|
|
11
43
|
/**
|
|
12
44
|
* Execute dev workflow: pack -> copy -> register
|
|
13
45
|
*/
|
|
14
46
|
export async function devPlugin(options) {
|
|
15
47
|
const projectRoot = process.cwd();
|
|
16
48
|
console.log(chalk.blue('🚀 Ling Plugin Dev Mode\n'));
|
|
49
|
+
// Load environment configuration
|
|
50
|
+
const envConfig = loadEnvConfig(projectRoot);
|
|
17
51
|
// Step 1: Pack the plugin
|
|
18
52
|
const spinner1 = ora('Packing plugin...').start();
|
|
19
53
|
try {
|
|
@@ -34,11 +68,14 @@ export async function devPlugin(options) {
|
|
|
34
68
|
const mpkPath = path.join(tempOutputDir, mpkFile);
|
|
35
69
|
spinner1.succeed(`Plugin packed: ${mpkFile}`);
|
|
36
70
|
// Step 2: Determine target extensions directory
|
|
37
|
-
const targetDir = options.target || findExtensionsDir(projectRoot);
|
|
71
|
+
const targetDir = options.target || findExtensionsDir(projectRoot, envConfig);
|
|
38
72
|
if (!targetDir) {
|
|
39
73
|
spinner1.fail('Cannot find extensions directory');
|
|
40
|
-
console.error(chalk.red('\nPlease specify target directory
|
|
41
|
-
console.error(chalk.gray('
|
|
74
|
+
console.error(chalk.red('\nPlease specify target directory:'));
|
|
75
|
+
console.error(chalk.gray('\nOption 1: Use --target flag'));
|
|
76
|
+
console.error(chalk.gray(' npx @linyjs/cli dev --target /path/to/extensions'));
|
|
77
|
+
console.error(chalk.gray('\nOption 2: Add to .env file'));
|
|
78
|
+
console.error(chalk.gray(' EXTENSIONS_DIR=/path/to/ling/packages/ssr/extensions'));
|
|
42
79
|
process.exit(1);
|
|
43
80
|
}
|
|
44
81
|
// Step 3: Extract and copy to extensions
|
|
@@ -118,10 +155,24 @@ export async function devPlugin(options) {
|
|
|
118
155
|
}
|
|
119
156
|
}
|
|
120
157
|
/**
|
|
121
|
-
* Find extensions directory
|
|
158
|
+
* Find extensions directory with priority:
|
|
159
|
+
* 1. --target command line option
|
|
160
|
+
* 2. EXTENSIONS_DIR from .env file
|
|
161
|
+
* 3. Auto-detect common paths
|
|
122
162
|
*/
|
|
123
|
-
function findExtensionsDir(projectRoot) {
|
|
124
|
-
//
|
|
163
|
+
function findExtensionsDir(projectRoot, envConfig) {
|
|
164
|
+
// Priority 1: Environment variable from .env
|
|
165
|
+
const envExtensionsDir = envConfig.EXTENSIONS_DIR || envConfig.EXTENSIONS_PATH;
|
|
166
|
+
if (envExtensionsDir) {
|
|
167
|
+
// Resolve relative path from project root
|
|
168
|
+
const resolvedPath = path.isAbsolute(envExtensionsDir)
|
|
169
|
+
? envExtensionsDir
|
|
170
|
+
: path.join(projectRoot, envExtensionsDir);
|
|
171
|
+
if (fs.existsSync(resolvedPath)) {
|
|
172
|
+
return resolvedPath;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Priority 2: Auto-detect common paths (monorepo structure)
|
|
125
176
|
const candidates = [
|
|
126
177
|
path.join(projectRoot, '..', 'ssr', 'extensions'),
|
|
127
178
|
path.join(projectRoot, '..', '..', 'packages', 'ssr', 'extensions'),
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAOvC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAmB;IACjD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAErD,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;IAElD,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAE1D,MAAM,UAAU,CAAC;YACf,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QAEH,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAE/E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAElD,QAAQ,CAAC,OAAO,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC;QAE9C,gDAAgD;QAChD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@linyjs/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"ling": "./dist/index.js"
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"chalk": "^5.0.0",
|
|
18
18
|
"fs-extra": "^11.0.0",
|
|
19
19
|
"ora": "^7.0.0",
|
|
20
|
-
"esbuild": "^0.20.0"
|
|
20
|
+
"esbuild": "^0.20.0",
|
|
21
|
+
"dotenv": "^16.4.0"
|
|
21
22
|
},
|
|
22
23
|
"devDependencies": {
|
|
23
24
|
"typescript": "^5.7.0",
|
package/src/commands/dev.ts
CHANGED
|
@@ -15,6 +15,44 @@ interface DevOptions {
|
|
|
15
15
|
verbose: boolean;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Load .env file and return environment variables
|
|
20
|
+
*/
|
|
21
|
+
function loadEnvConfig(projectRoot: string): Record<string, string> {
|
|
22
|
+
const envPath = path.join(projectRoot, '.env');
|
|
23
|
+
|
|
24
|
+
if (!fs.existsSync(envPath)) {
|
|
25
|
+
// Try parent directories (monorepo structure)
|
|
26
|
+
const parentEnvPath = path.join(projectRoot, '..', '.env');
|
|
27
|
+
if (fs.existsSync(parentEnvPath)) {
|
|
28
|
+
return parseEnvFile(parentEnvPath);
|
|
29
|
+
}
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return parseEnvFile(envPath);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Parse .env file content
|
|
38
|
+
*/
|
|
39
|
+
function parseEnvFile(envPath: string): Record<string, string> {
|
|
40
|
+
const content = fs.readFileSync(envPath, 'utf-8');
|
|
41
|
+
const config: Record<string, string> = {};
|
|
42
|
+
|
|
43
|
+
content.split('\n').forEach(line => {
|
|
44
|
+
line = line.trim();
|
|
45
|
+
if (line && !line.startsWith('#')) {
|
|
46
|
+
const [key, ...valueParts] = line.split('=');
|
|
47
|
+
if (key && valueParts.length > 0) {
|
|
48
|
+
config[key.trim()] = valueParts.join('=').trim();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
return config;
|
|
54
|
+
}
|
|
55
|
+
|
|
18
56
|
/**
|
|
19
57
|
* Execute dev workflow: pack -> copy -> register
|
|
20
58
|
*/
|
|
@@ -23,6 +61,9 @@ export async function devPlugin(options: DevOptions) {
|
|
|
23
61
|
|
|
24
62
|
console.log(chalk.blue('🚀 Ling Plugin Dev Mode\n'));
|
|
25
63
|
|
|
64
|
+
// Load environment configuration
|
|
65
|
+
const envConfig = loadEnvConfig(projectRoot);
|
|
66
|
+
|
|
26
67
|
// Step 1: Pack the plugin
|
|
27
68
|
const spinner1 = ora('Packing plugin...').start();
|
|
28
69
|
|
|
@@ -50,12 +91,15 @@ export async function devPlugin(options: DevOptions) {
|
|
|
50
91
|
spinner1.succeed(`Plugin packed: ${mpkFile}`);
|
|
51
92
|
|
|
52
93
|
// Step 2: Determine target extensions directory
|
|
53
|
-
const targetDir = options.target || findExtensionsDir(projectRoot);
|
|
94
|
+
const targetDir = options.target || findExtensionsDir(projectRoot, envConfig);
|
|
54
95
|
|
|
55
96
|
if (!targetDir) {
|
|
56
97
|
spinner1.fail('Cannot find extensions directory');
|
|
57
|
-
console.error(chalk.red('\nPlease specify target directory
|
|
58
|
-
console.error(chalk.gray('
|
|
98
|
+
console.error(chalk.red('\nPlease specify target directory:'));
|
|
99
|
+
console.error(chalk.gray('\nOption 1: Use --target flag'));
|
|
100
|
+
console.error(chalk.gray(' npx @linyjs/cli dev --target /path/to/extensions'));
|
|
101
|
+
console.error(chalk.gray('\nOption 2: Add to .env file'));
|
|
102
|
+
console.error(chalk.gray(' EXTENSIONS_DIR=/path/to/ling/packages/ssr/extensions'));
|
|
59
103
|
process.exit(1);
|
|
60
104
|
}
|
|
61
105
|
|
|
@@ -154,10 +198,26 @@ export async function devPlugin(options: DevOptions) {
|
|
|
154
198
|
}
|
|
155
199
|
|
|
156
200
|
/**
|
|
157
|
-
* Find extensions directory
|
|
201
|
+
* Find extensions directory with priority:
|
|
202
|
+
* 1. --target command line option
|
|
203
|
+
* 2. EXTENSIONS_DIR from .env file
|
|
204
|
+
* 3. Auto-detect common paths
|
|
158
205
|
*/
|
|
159
|
-
function findExtensionsDir(projectRoot: string): string | null {
|
|
160
|
-
//
|
|
206
|
+
function findExtensionsDir(projectRoot: string, envConfig: Record<string, string>): string | null {
|
|
207
|
+
// Priority 1: Environment variable from .env
|
|
208
|
+
const envExtensionsDir = envConfig.EXTENSIONS_DIR || envConfig.EXTENSIONS_PATH;
|
|
209
|
+
if (envExtensionsDir) {
|
|
210
|
+
// Resolve relative path from project root
|
|
211
|
+
const resolvedPath = path.isAbsolute(envExtensionsDir)
|
|
212
|
+
? envExtensionsDir
|
|
213
|
+
: path.join(projectRoot, envExtensionsDir);
|
|
214
|
+
|
|
215
|
+
if (fs.existsSync(resolvedPath)) {
|
|
216
|
+
return resolvedPath;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Priority 2: Auto-detect common paths (monorepo structure)
|
|
161
221
|
const candidates = [
|
|
162
222
|
path.join(projectRoot, '..', 'ssr', 'extensions'),
|
|
163
223
|
path.join(projectRoot, '..', '..', 'packages', 'ssr', 'extensions'),
|