@coze-arch/cli 0.0.1-alpha.ecba20 → 0.0.1-alpha.ee5d83
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/lib/__templates__/expo/.coze +1 -1
- package/lib/__templates__/expo/.cozeproj/scripts/dev_build.sh +19 -82
- package/lib/__templates__/expo/.cozeproj/scripts/dev_run.sh +62 -81
- package/lib/__templates__/expo/README.md +22 -14
- package/lib/__templates__/expo/client/app/index.tsx +1 -0
- package/lib/__templates__/expo/client/app.config.ts +64 -60
- package/lib/__templates__/expo/client/constants/theme.ts +22 -18
- package/lib/__templates__/expo/client/hooks/useColorScheme.ts +34 -1
- package/lib/__templates__/expo/client/package.json +1 -0
- package/lib/__templates__/expo/client/screens/home/index.tsx +12 -37
- package/lib/__templates__/expo/client/screens/home/styles.ts +19 -51
- package/lib/__templates__/expo/pnpm-lock.yaml +57 -5
- package/lib/__templates__/expo/server/package.json +3 -1
- package/lib/__templates__/expo/server/src/index.ts +8 -2
- package/lib/__templates__/expo/template.config.js +1 -0
- package/lib/__templates__/nextjs/.coze +1 -0
- package/lib/__templates__/nextjs/_npmrc +1 -0
- package/lib/__templates__/nextjs/next.config.ts +11 -0
- package/lib/__templates__/nextjs/package.json +3 -5
- package/lib/__templates__/nextjs/pnpm-lock.yaml +13 -1025
- package/lib/__templates__/nextjs/scripts/dev.sh +1 -1
- package/lib/__templates__/nextjs/scripts/prepare.sh +9 -0
- package/lib/__templates__/nextjs/src/app/globals.css +10 -2
- package/lib/__templates__/nextjs/src/app/layout.tsx +1 -16
- package/lib/__templates__/nextjs/src/app/page.tsx +33 -21
- package/lib/__templates__/nextjs/src/components/ui/resizable.tsx +29 -22
- package/lib/__templates__/nextjs/src/components/ui/sidebar.tsx +228 -230
- package/lib/__templates__/nextjs/template.config.js +30 -0
- package/lib/__templates__/templates.json +61 -70
- package/lib/__templates__/vite/.coze +1 -0
- package/lib/__templates__/vite/_npmrc +1 -0
- package/lib/__templates__/vite/eslint.config.mjs +9 -0
- package/lib/__templates__/vite/package.json +5 -1
- package/lib/__templates__/vite/pnpm-lock.yaml +3481 -14
- package/lib/__templates__/vite/scripts/prepare.sh +9 -0
- package/lib/__templates__/vite/template.config.js +28 -4
- package/lib/cli.js +46 -22
- package/package.json +1 -1
- package/lib/__templates__/nextjs/.babelrc +0 -15
- package/lib/__templates__/nextjs/.vscode/settings.json +0 -121
- package/lib/__templates__/nextjs/server.mjs +0 -50
- package/lib/__templates__/vite/.vscode/settings.json +0 -7
- /package/lib/__templates__/expo/client/app/{index.ts → home.tsx} +0 -0
|
@@ -37,7 +37,11 @@ export const paramsSchema = {
|
|
|
37
37
|
additionalProperties: false,
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
+
const description = `Vite(简单项目):\`coze init \${COZE_WORKSPACE_PATH} --template vite\`
|
|
41
|
+
- 适用:轻量级 SPA、纯前端交互、仪表盘等轻量级项目。`;
|
|
42
|
+
|
|
40
43
|
const config = {
|
|
44
|
+
description: description,
|
|
41
45
|
paramsSchema,
|
|
42
46
|
|
|
43
47
|
defaultParams: {
|
|
@@ -55,11 +59,31 @@ const config = {
|
|
|
55
59
|
|
|
56
60
|
onAfterRender: async (context, outputPath) => {
|
|
57
61
|
console.log(`\nProject created at: ${outputPath}`);
|
|
58
|
-
console.log(
|
|
59
|
-
console.log(
|
|
60
|
-
console.log(
|
|
61
|
-
console.log(
|
|
62
|
+
console.log('\nConfiguration:');
|
|
63
|
+
console.log(' - Framework: vite');
|
|
64
|
+
console.log(' - TypeScript: enabled');
|
|
65
|
+
console.log(' - App Router: enabled');
|
|
62
66
|
console.log(` - Port: ${context.port}`);
|
|
67
|
+
|
|
68
|
+
// Skip pnpm add in test environment to avoid monorepo workspace issues
|
|
69
|
+
if (process.env.NODE_ENV === 'test') {
|
|
70
|
+
console.log('⊘ Skipping dependency update in test environment');
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const cmd = `pnpm add coze-coding-dev-sdk@"^0.7.0"`;
|
|
75
|
+
console.log(`${cmd}`);
|
|
76
|
+
try {
|
|
77
|
+
const projectRoot = resolve(outputPath);
|
|
78
|
+
execSync(cmd, {
|
|
79
|
+
cwd: projectRoot,
|
|
80
|
+
stdio: 'inherit',
|
|
81
|
+
});
|
|
82
|
+
console.log('✓ coze-coding-dev-sdk updated successfully');
|
|
83
|
+
} catch (error) {
|
|
84
|
+
console.error('✗ Failed to update coze-coding-dev-sdk:', error);
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
63
87
|
},
|
|
64
88
|
};
|
|
65
89
|
|
package/lib/cli.js
CHANGED
|
@@ -7,10 +7,10 @@ var fs = require('fs');
|
|
|
7
7
|
var shelljs = require('shelljs');
|
|
8
8
|
var perf_hooks = require('perf_hooks');
|
|
9
9
|
var fs$1 = require('fs/promises');
|
|
10
|
+
var os = require('os');
|
|
10
11
|
var toml = require('@iarna/toml');
|
|
11
12
|
var jsYaml = require('js-yaml');
|
|
12
13
|
var child_process = require('child_process');
|
|
13
|
-
var os = require('os');
|
|
14
14
|
var addFormats = require('ajv-formats');
|
|
15
15
|
var Ajv = require('ajv');
|
|
16
16
|
var minimist = require('minimist');
|
|
@@ -826,23 +826,48 @@ const getCommandConfig = (
|
|
|
826
826
|
function _nullishCoalesce$1(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
827
827
|
|
|
828
828
|
/**
|
|
829
|
-
*
|
|
829
|
+
* 日志文件名常量
|
|
830
830
|
*/
|
|
831
|
-
const
|
|
832
|
-
const ensureLogDir = () => {
|
|
833
|
-
if (!fs.existsSync(logDir)) {
|
|
834
|
-
fs.mkdirSync(logDir, { recursive: true });
|
|
835
|
-
}
|
|
836
|
-
};
|
|
831
|
+
const LOG_FILE_NAME = 'dev.log';
|
|
837
832
|
|
|
838
|
-
|
|
833
|
+
/**
|
|
834
|
+
* 获取日志目录
|
|
835
|
+
* 优先使用环境变量 COZE_LOG_DIR,否则使用 ~/.coze-logs
|
|
836
|
+
*/
|
|
837
|
+
const getLogDir = () =>
|
|
838
|
+
process.env.COZE_LOG_DIR || path.join(os.homedir(), '.coze-logs');
|
|
839
839
|
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
840
|
+
/**
|
|
841
|
+
* 解析日志文件路径
|
|
842
|
+
* - 如果是绝对路径,直接使用
|
|
843
|
+
* - 如果是相对路径,基于 getLogDir() + 相对路径
|
|
844
|
+
* - 如果为空,使用 getLogDir() + LOG_FILE_NAME
|
|
845
|
+
*/
|
|
846
|
+
const resolveLogFilePath = (logFile) => {
|
|
847
|
+
if (!logFile) {
|
|
848
|
+
return path.join(getLogDir(), LOG_FILE_NAME);
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
if (path.isAbsolute(logFile)) {
|
|
852
|
+
return logFile;
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
return path.join(getLogDir(), logFile);
|
|
856
|
+
};
|
|
857
|
+
|
|
858
|
+
/**
|
|
859
|
+
* 创建日志写入流
|
|
860
|
+
*/
|
|
861
|
+
const createLogStream = (logFilePath) => {
|
|
862
|
+
const logDir = path.dirname(logFilePath);
|
|
863
|
+
|
|
864
|
+
// 确保日志目录存在
|
|
865
|
+
if (!fs.existsSync(logDir)) {
|
|
866
|
+
fs.mkdirSync(logDir, { recursive: true });
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
// 使用 'w' 标志覆盖之前的日志
|
|
870
|
+
return fs.createWriteStream(logFilePath, { flags: 'w' });
|
|
846
871
|
};
|
|
847
872
|
|
|
848
873
|
/**
|
|
@@ -860,16 +885,15 @@ const executeRun = async (
|
|
|
860
885
|
const commandArgs = getCommandConfig(config, commandName);
|
|
861
886
|
|
|
862
887
|
// 2. 准备日志
|
|
863
|
-
const
|
|
864
|
-
const
|
|
865
|
-
const logStream = logManager.createWriteStream(logFile);
|
|
888
|
+
const logFilePath = resolveLogFilePath(options.logFile);
|
|
889
|
+
const logStream = createLogStream(logFilePath);
|
|
866
890
|
|
|
867
891
|
// 3. 执行命令
|
|
868
892
|
const commandString = commandArgs.join(' ');
|
|
869
893
|
|
|
870
894
|
logger.info(`Executing: ${commandString}`);
|
|
871
895
|
logger.info(`Working directory: ${process.cwd()}`);
|
|
872
|
-
logger.info(`Log file: ${
|
|
896
|
+
logger.info(`Log file: ${logFilePath}`);
|
|
873
897
|
|
|
874
898
|
const childProcess = shelljs.exec(commandString, {
|
|
875
899
|
async: true,
|
|
@@ -898,11 +922,11 @@ const executeRun = async (
|
|
|
898
922
|
logger.error(
|
|
899
923
|
`Command exited with code ${_nullishCoalesce$1(code, () => ( 'unknown'))}${signal ? ` and signal ${signal}` : ''}`,
|
|
900
924
|
);
|
|
901
|
-
logger.error(`Check log file for details: ${
|
|
925
|
+
logger.error(`Check log file for details: ${logFilePath}`);
|
|
902
926
|
process.exit(code || 1);
|
|
903
927
|
} else {
|
|
904
928
|
logger.success('Command completed successfully');
|
|
905
|
-
logger.info(`Log file: ${
|
|
929
|
+
logger.info(`Log file: ${logFilePath}`);
|
|
906
930
|
}
|
|
907
931
|
});
|
|
908
932
|
|
|
@@ -1854,7 +1878,7 @@ const registerCommand = program => {
|
|
|
1854
1878
|
});
|
|
1855
1879
|
};
|
|
1856
1880
|
|
|
1857
|
-
var version = "0.0.1-alpha.
|
|
1881
|
+
var version = "0.0.1-alpha.ee5d83";
|
|
1858
1882
|
var packageJson = {
|
|
1859
1883
|
version: version};
|
|
1860
1884
|
|
package/package.json
CHANGED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"[css]": {
|
|
3
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
4
|
-
},
|
|
5
|
-
"[dotenv]": {
|
|
6
|
-
"editor.defaultFormatter": "foxundermoon.shell-format"
|
|
7
|
-
},
|
|
8
|
-
"[html]": {
|
|
9
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
10
|
-
},
|
|
11
|
-
"[ignore]": {
|
|
12
|
-
"editor.defaultFormatter": "foxundermoon.shell-format"
|
|
13
|
-
},
|
|
14
|
-
"[javascript]": {
|
|
15
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
16
|
-
},
|
|
17
|
-
"[javascriptreact]": {
|
|
18
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
19
|
-
},
|
|
20
|
-
"[json]": {
|
|
21
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
22
|
-
},
|
|
23
|
-
"[jsonc]": {
|
|
24
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
25
|
-
},
|
|
26
|
-
"[less]": {
|
|
27
|
-
"editor.defaultFormatter": "stylelint.vscode-stylelint"
|
|
28
|
-
},
|
|
29
|
-
"[scss]": {
|
|
30
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
31
|
-
},
|
|
32
|
-
"[shellscript]": {
|
|
33
|
-
"editor.defaultFormatter": "foxundermoon.shell-format"
|
|
34
|
-
},
|
|
35
|
-
"[sql]": {
|
|
36
|
-
"editor.defaultFormatter": "adpyke.vscode-sql-formatter"
|
|
37
|
-
},
|
|
38
|
-
"[svg]": {
|
|
39
|
-
"editor.defaultFormatter": "jock.svg"
|
|
40
|
-
},
|
|
41
|
-
"[typescript]": {
|
|
42
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
43
|
-
},
|
|
44
|
-
"[typescriptreact]": {
|
|
45
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
46
|
-
},
|
|
47
|
-
"[xml]": {
|
|
48
|
-
"editor.defaultFormatter": "mblode.pretty-formatter"
|
|
49
|
-
},
|
|
50
|
-
"[yaml]": {
|
|
51
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
52
|
-
},
|
|
53
|
-
"cSpell.diagnosticLevel": "Warning",
|
|
54
|
-
"css.validate": false,
|
|
55
|
-
"editor.codeActionsOnSave": {
|
|
56
|
-
"source.fixAll": "never",
|
|
57
|
-
"source.fixAll.eslint": "explicit",
|
|
58
|
-
"source.organizeImports": "never",
|
|
59
|
-
"source.removeUnused": "never",
|
|
60
|
-
"source.removeUnused.ts": "never",
|
|
61
|
-
"source.removeUnusedImports": "never",
|
|
62
|
-
"source.sort.json": "never"
|
|
63
|
-
// "source.sortImports": "always"
|
|
64
|
-
},
|
|
65
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
66
|
-
"editor.formatOnPaste": false,
|
|
67
|
-
"editor.formatOnSave": true,
|
|
68
|
-
"editor.formatOnType": false,
|
|
69
|
-
"editor.insertSpaces": true,
|
|
70
|
-
"editor.minimap.enabled": true,
|
|
71
|
-
//
|
|
72
|
-
"editor.rulers": [80, 120],
|
|
73
|
-
"editor.semanticHighlighting.enabled": false,
|
|
74
|
-
"editor.tabSize": 2,
|
|
75
|
-
"emmet.triggerExpansionOnTab": true,
|
|
76
|
-
"files.associations": {
|
|
77
|
-
".babelrc": "json",
|
|
78
|
-
".code-workspace": "jsonc",
|
|
79
|
-
".eslintrc": "jsonc",
|
|
80
|
-
".eslintrc*.json": "jsonc",
|
|
81
|
-
".htmlhintrc": "jsonc",
|
|
82
|
-
".stylelintrc": "javascript",
|
|
83
|
-
"*.json": "jsonc",
|
|
84
|
-
"*.log": "plaintext",
|
|
85
|
-
"*.map": "plaintext",
|
|
86
|
-
"**/coverage/**/*.*": "plaintext",
|
|
87
|
-
"**/pnpm-lock.yaml": "plaintext",
|
|
88
|
-
"htmlhintrc": "jsonc",
|
|
89
|
-
"package.json": "json",
|
|
90
|
-
"README": "markdown",
|
|
91
|
-
"stylelintrc": "jsonc",
|
|
92
|
-
".coze": "toml"
|
|
93
|
-
},
|
|
94
|
-
"files.defaultLanguage": "plaintext",
|
|
95
|
-
"files.eol": "\n",
|
|
96
|
-
"files.exclude": {
|
|
97
|
-
"**/.DS_Store": true,
|
|
98
|
-
"**/.git": true,
|
|
99
|
-
"**/.hg": true,
|
|
100
|
-
"**/.svn": true,
|
|
101
|
-
// "**/.lintcache": true,
|
|
102
|
-
"**/.swc": true,
|
|
103
|
-
"**/CVS": true,
|
|
104
|
-
"**/Thumbs.db": true
|
|
105
|
-
},
|
|
106
|
-
"files.insertFinalNewline": true,
|
|
107
|
-
"files.trimTrailingWhitespace": true,
|
|
108
|
-
"files.watcherExclude": {
|
|
109
|
-
"**/.git/objects/**": true,
|
|
110
|
-
"**/.git/subtree-cache/**": true,
|
|
111
|
-
"**/node_modules/*/**": true
|
|
112
|
-
},
|
|
113
|
-
"git.openRepositoryInParentFolders": "always",
|
|
114
|
-
"search.exclude": {
|
|
115
|
-
"**/dist": true,
|
|
116
|
-
"**/node_modules": true
|
|
117
|
-
},
|
|
118
|
-
// "editor.formatOnSaveMode": "modificationsIfAvailable",
|
|
119
|
-
"search.followSymlinks": false,
|
|
120
|
-
"search.useIgnoreFiles": true
|
|
121
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { createServer } from 'node:http';
|
|
2
|
-
import next from 'next';
|
|
3
|
-
import { launchEditorMiddleware } from '@react-dev-inspector/middleware';
|
|
4
|
-
|
|
5
|
-
const dev = process.env.NODE_ENV !== 'production';
|
|
6
|
-
const hostname = process.env.HOSTNAME || 'localhost';
|
|
7
|
-
const port = parseInt(process.env.PORT || '3000', 10);
|
|
8
|
-
|
|
9
|
-
const app = next({ dev, hostname, port });
|
|
10
|
-
const handle = app.getRequestHandler();
|
|
11
|
-
|
|
12
|
-
app.prepare().then(() => {
|
|
13
|
-
createServer((req, res) => {
|
|
14
|
-
/**
|
|
15
|
-
* Middlewares, from top to bottom
|
|
16
|
-
*/
|
|
17
|
-
const middlewares = [
|
|
18
|
-
/**
|
|
19
|
-
* react-dev-inspector middleware for launching editor
|
|
20
|
-
* Only active in development mode
|
|
21
|
-
*/
|
|
22
|
-
...(dev ? [launchEditorMiddleware] : []),
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Next.js default app handler
|
|
26
|
-
*/
|
|
27
|
-
(req, res) => handle(req, res),
|
|
28
|
-
];
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Build middleware pipeline using reduceRight
|
|
32
|
-
* Executes middlewares from top to bottom
|
|
33
|
-
*/
|
|
34
|
-
const middlewarePipeline = middlewares.reduceRight(
|
|
35
|
-
(next, middleware) => () => {
|
|
36
|
-
middleware(req, res, next);
|
|
37
|
-
},
|
|
38
|
-
() => {},
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
middlewarePipeline();
|
|
42
|
-
})
|
|
43
|
-
.once('error', (err) => {
|
|
44
|
-
console.error(err);
|
|
45
|
-
process.exit(1);
|
|
46
|
-
})
|
|
47
|
-
.listen(port, () => {
|
|
48
|
-
console.log(`> Ready on http://${hostname}:${port}`);
|
|
49
|
-
});
|
|
50
|
-
});
|
|
File without changes
|