node-karin 0.12.2-5.pr.206.8bc321c → 0.12.2-5.pr.206.b68cf80

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.
Files changed (56) hide show
  1. package/dist/cli/index.cjs +360 -0
  2. package/dist/cli/index.d.ts +1 -0
  3. package/dist/cli/index.js +354 -0
  4. package/{lib → dist}/index.d.ts +8 -43
  5. package/dist/index.js +12643 -0
  6. package/dist/module/dotenv.cjs +22 -0
  7. package/dist/module/dotenv.d.ts +2 -0
  8. package/dist/module/dotenv.js +2 -0
  9. package/dist/root.d.ts +40 -0
  10. package/dist/root.js +44 -0
  11. package/package.json +85 -75
  12. package/LICENSE +0 -21
  13. package/README.md +0 -29
  14. package/lib/index.js +0 -38
  15. /package/{packages → dist}/module/art-template.cjs +0 -0
  16. /package/{packages → dist}/module/art-template.d.ts +0 -0
  17. /package/{packages → dist}/module/art-template.js +0 -0
  18. /package/{packages → dist}/module/axios.cjs +0 -0
  19. /package/{packages → dist}/module/axios.d.ts +0 -0
  20. /package/{packages → dist}/module/axios.js +0 -0
  21. /package/{packages → dist}/module/chalk.cjs +0 -0
  22. /package/{packages → dist}/module/chalk.d.ts +0 -0
  23. /package/{packages → dist}/module/chalk.js +0 -0
  24. /package/{packages → dist}/module/chokidar.cjs +0 -0
  25. /package/{packages → dist}/module/chokidar.d.ts +0 -0
  26. /package/{packages → dist}/module/chokidar.js +0 -0
  27. /package/{packages → dist}/module/commander.cjs +0 -0
  28. /package/{packages → dist}/module/commander.d.ts +0 -0
  29. /package/{packages → dist}/module/commander.js +0 -0
  30. /package/{packages → dist}/module/express.cjs +0 -0
  31. /package/{packages → dist}/module/express.d.ts +0 -0
  32. /package/{packages → dist}/module/express.js +0 -0
  33. /package/{packages → dist}/module/level.cjs +0 -0
  34. /package/{packages → dist}/module/level.d.ts +0 -0
  35. /package/{packages → dist}/module/level.js +0 -0
  36. /package/{packages → dist}/module/lodash.cjs +0 -0
  37. /package/{packages → dist}/module/lodash.d.ts +0 -0
  38. /package/{packages → dist}/module/lodash.js +0 -0
  39. /package/{packages → dist}/module/log4js.cjs +0 -0
  40. /package/{packages → dist}/module/log4js.d.ts +0 -0
  41. /package/{packages → dist}/module/log4js.js +0 -0
  42. /package/{packages → dist}/module/moment.cjs +0 -0
  43. /package/{packages → dist}/module/moment.d.ts +0 -0
  44. /package/{packages → dist}/module/moment.js +0 -0
  45. /package/{packages → dist}/module/node-schedule.cjs +0 -0
  46. /package/{packages → dist}/module/node-schedule.d.ts +0 -0
  47. /package/{packages → dist}/module/node-schedule.js +0 -0
  48. /package/{packages → dist}/module/redis.cjs +0 -0
  49. /package/{packages → dist}/module/redis.d.ts +0 -0
  50. /package/{packages → dist}/module/redis.js +0 -0
  51. /package/{packages → dist}/module/ws.cjs +0 -0
  52. /package/{packages → dist}/module/ws.d.ts +0 -0
  53. /package/{packages → dist}/module/ws.js +0 -0
  54. /package/{packages → dist}/module/yaml.cjs +0 -0
  55. /package/{packages → dist}/module/yaml.d.ts +0 -0
  56. /package/{packages → dist}/module/yaml.js +0 -0
@@ -0,0 +1,360 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ var fs2 = require('fs');
5
+ var path2 = require('path');
6
+ var child_process = require('child_process');
7
+ var url = require('url');
8
+ var dotenv = require('dotenv');
9
+ var promises = require('fs/promises');
10
+ var commander = require('commander');
11
+
12
+ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
13
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
+
15
+ var fs2__default = /*#__PURE__*/_interopDefault(fs2);
16
+ var path2__default = /*#__PURE__*/_interopDefault(path2);
17
+ var dotenv__default = /*#__PURE__*/_interopDefault(dotenv);
18
+
19
+ var exec = (cmd, options = {}) => {
20
+ try {
21
+ const result = child_process.execSync(cmd, options);
22
+ return { status: true, error: null, stdout: result.toString(), stderr: "" };
23
+ } catch (error) {
24
+ return { status: false, error, stdout: "", stderr: "" };
25
+ }
26
+ };
27
+ var pm2Dir = path2__default.default.join(process.cwd(), "./@karinjs/config/pm2.json");
28
+ var start = () => {
29
+ if (!fs2__default.default.existsSync(pm2Dir)) {
30
+ console.log(`[pm2] \u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728 \u8BF7\u68C0\u67E5 ${pm2Dir} \u662F\u5426\u5B58\u5728`);
31
+ console.log("[pm2] \u5982\u679C\u662F\u65B0\u9879\u76EE\uFF0C\u8BF7\u5148\u524D\u53F0\u542F\u52A8\u751F\u6210\u914D\u7F6E\u6587\u4EF6: pnpm app");
32
+ process.exit(1);
33
+ }
34
+ console.log("[pm2] \u542F\u52A8\u4E2D...");
35
+ const { error } = exec(`pm2 start ${pm2Dir}`, { cwd: process.cwd() });
36
+ if (error) {
37
+ console.log("[pm2] \u542F\u52A8\u5931\u8D25");
38
+ console.log(error);
39
+ process.exit(1);
40
+ }
41
+ console.log("[pm2] \u542F\u52A8\u6210\u529F");
42
+ console.log("[pm2] \u91CD\u542F\u670D\u52A1: pnpm rs");
43
+ console.log("[pm2] \u67E5\u770B\u65E5\u5FD7: pnpm log");
44
+ console.log("[pm2] \u505C\u6B62\u670D\u52A1: pnpm stop");
45
+ console.log("[pm2] \u67E5\u770B\u76D1\u63A7: pm2 monit");
46
+ console.log("[pm2] \u67E5\u770B\u5217\u8868: pm2 list");
47
+ process.exit(0);
48
+ };
49
+ var log = () => {
50
+ if (!fs2__default.default.existsSync(pm2Dir)) {
51
+ console.log(`[pm2] \u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728 \u8BF7\u68C0\u67E5 ${pm2Dir} \u662F\u5426\u5B58\u5728`);
52
+ console.log("[pm2] \u5982\u679C\u662F\u65B0\u9879\u76EE\uFF0C\u8BF7\u5148\u524D\u53F0\u542F\u52A8\u751F\u6210\u914D\u7F6E\u6587\u4EF6: pnpm app");
53
+ process.exit(1);
54
+ }
55
+ const data = JSON.parse(fs2__default.default.readFileSync(pm2Dir, "utf-8"));
56
+ try {
57
+ const prefix = process.platform === "win32" ? "pm2.cmd" : "pm2";
58
+ child_process.spawn(prefix, ["logs", data.name, "--lines", data.lines || 1e3], { stdio: "inherit", shell: true });
59
+ } catch (error) {
60
+ console.error("[pm2] \u53D1\u751F\u672A\u77E5\u9519\u8BEF: \u8BF7\u68C0\u67E5pm2\u662F\u5426\u5B89\u88C5 \u3010npm install -g pm2\u3011");
61
+ console.error(error);
62
+ process.exit(1);
63
+ }
64
+ };
65
+ var stop = () => {
66
+ if (!fs2__default.default.existsSync(pm2Dir)) {
67
+ console.log(`[pm2] \u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728 \u8BF7\u68C0\u67E5 ${pm2Dir} \u662F\u5426\u5B58\u5728`);
68
+ console.log("[pm2] \u5982\u679C\u662F\u65B0\u9879\u76EE\uFF0C\u8BF7\u5148\u524D\u53F0\u542F\u52A8\u751F\u6210\u914D\u7F6E\u6587\u4EF6: pnpm app");
69
+ process.exit(1);
70
+ }
71
+ const data = JSON.parse(fs2__default.default.readFileSync(pm2Dir, "utf-8"));
72
+ exec(`pm2 stop ${data.name}`, { cwd: process.cwd() });
73
+ console.log("[pm2] \u505C\u6B62\u6210\u529F");
74
+ process.exit(0);
75
+ };
76
+ var restart = () => {
77
+ if (!fs2__default.default.existsSync(pm2Dir)) {
78
+ console.log(`[pm2] \u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728 \u8BF7\u68C0\u67E5 ${pm2Dir} \u662F\u5426\u5B58\u5728`);
79
+ console.log("[pm2] \u5982\u679C\u662F\u65B0\u9879\u76EE\uFF0C\u8BF7\u5148\u524D\u53F0\u542F\u52A8\u751F\u6210\u914D\u7F6E\u6587\u4EF6: pnpm app");
80
+ process.exit(1);
81
+ }
82
+ };
83
+ var pm2 = {
84
+ start,
85
+ log,
86
+ stop,
87
+ restart
88
+ };
89
+ var dir = process.env.INIT_CWD || process.cwd();
90
+ var pkgDir = url.fileURLToPath(new url.URL("../..", (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))));
91
+ var createDir = () => {
92
+ const list = [
93
+ path2__default.default.join(dir, "logs"),
94
+ path2__default.default.join(dir, "plugins", "karin-plugin-example"),
95
+ path2__default.default.join(dir, "@karinjs", "config"),
96
+ path2__default.default.join(dir, "@karinjs", "data"),
97
+ path2__default.default.join(dir, "@karinjs", "temp", "console"),
98
+ path2__default.default.join(dir, "@karinjs", "temp", "html"),
99
+ path2__default.default.join(dir, "@karinjs", "resource")
100
+ ];
101
+ list.forEach((item) => {
102
+ if (!fs2__default.default.existsSync(item)) fs2__default.default.mkdirSync(item, { recursive: true });
103
+ });
104
+ };
105
+ var createOtherFile = async () => {
106
+ const pnpmfile = path2__default.default.join(dir, ".pnpmfile.cjs");
107
+ if (!fs2__default.default.existsSync(pnpmfile)) {
108
+ fs2__default.default.writeFileSync(pnpmfile, [
109
+ "// \u6E05\u7A7A\u5BF9\u7B49\u4F9D\u8D56\u4E2D\u7684node-karin",
110
+ "function readPackage (pkg, context) {",
111
+ " if (pkg?.['peerDependencies']?.['node-karin'] && pkg['peerDependencies']['node-karin'] !== 'file:./lib') {",
112
+ " delete pkg['peerDependencies']['node-karin']",
113
+ " }",
114
+ " return pkg",
115
+ "}",
116
+ "module.exports = {",
117
+ " hooks: {",
118
+ " readPackage",
119
+ " },",
120
+ "}"
121
+ ].join("\n"));
122
+ }
123
+ const { stdout } = exec("npm config get registry");
124
+ if (stdout.includes("registry.npmjs.org")) return;
125
+ const { stdout: proxy } = exec("npm config get proxy");
126
+ if (proxy) return;
127
+ const list = [
128
+ "node_sqlite3_binary_host_mirror=https://registry.npmmirror.com/-/binary/sqlite3",
129
+ "better_sqlite3_binary_host_mirror=https://registry.npmmirror.com/-/binary/better-sqlite3",
130
+ "sass_binary_site=https://registry.npmmirror.com/-/binary/node-sass",
131
+ "sharp_binary_host=https://registry.npmmirror.com/-/binary/sharp",
132
+ "sharp_libvips_binary_host=https://registry.npmmirror.com/-/binary/sharp-libvips",
133
+ "canvas_binary_host_mirror=https://registry.npmmirror.com/-/binary/canvas",
134
+ "# 19\u4EE5\u4E0B\u7248\u672C",
135
+ "puppeteer_download_host=https://registry.npmmirror.com/mirrors",
136
+ "# 20\u4EE5\u4E0A\u7248\u672C",
137
+ "PUPPETEER_DOWNLOAD_BASE_URL = https://registry.npmmirror.com/binaries/chrome-for-testing"
138
+ ];
139
+ const npmrc = path2__default.default.join(dir, ".npmrc");
140
+ if (!fs2__default.default.existsSync(npmrc)) {
141
+ fs2__default.default.writeFileSync(npmrc, list.join("\n"));
142
+ return;
143
+ }
144
+ const data = fs2__default.default.readFileSync(npmrc, "utf-8");
145
+ list.forEach((item) => {
146
+ if (data.includes(item.split("=")[0])) return;
147
+ fs2__default.default.appendFileSync(npmrc, `
148
+ ${item}`);
149
+ });
150
+ const env = path2__default.default.join(dir, ".env");
151
+ const envData = [
152
+ "# \u662F\u5426\u542F\u7528HTTP",
153
+ "HTTP_ENABLE=true",
154
+ "# HTTP\u76D1\u542C\u7AEF\u53E3",
155
+ "HTTP_PORT=7777",
156
+ "# HTTP\u76D1\u542C\u5730\u5740",
157
+ "HTTP_HOST=0.0.0.0",
158
+ "# HTTP\u9274\u6743\u79D8\u94A5 \u4EC5\u7528\u4E8Ekarin\u81EA\u8EABApi",
159
+ "HTTP_AUTH_KEY=default",
160
+ "# ws_server\u9274\u6743\u79D8\u94A5",
161
+ "WS_SERVER_AUTH_KEY=",
162
+ "\n",
163
+ "# \u662F\u5426\u542F\u7528Redis \u5173\u95ED\u540E\u5C06\u4F7F\u7528\u5185\u90E8\u865A\u62DFRedis",
164
+ "REDIS_ENABLE=true",
165
+ "# \u91CD\u542F\u662F\u5426\u8C03\u7528pm2 \u5982\u679C\u4E0D\u8C03\u7528\u5219\u4F1A\u76F4\u63A5\u5173\u673A \u6B64\u914D\u7F6E\u9002\u5408\u6709\u8FDB\u7A0B\u5B88\u62A4\u7684\u7A0B\u5E8F",
166
+ "PM2_RESTART=true",
167
+ "\n",
168
+ "# \u65E5\u5FD7\u7B49\u7EA7",
169
+ "LOG_LEVEL=info",
170
+ "# \u65E5\u5FD7\u4FDD\u7559\u5929\u6570",
171
+ "LOG_DAYS_TO_KEEP=7",
172
+ "# \u65E5\u5FD7\u6587\u4EF6\u6700\u5927\u5927\u5C0F \u5982\u679C\u6B64\u9879\u5927\u4E8E0\u5219\u542F\u7528\u65E5\u5FD7\u5206\u5272",
173
+ "LOG_MAX_LOG_SIZE=0",
174
+ "# logger.fnc\u989C\u8272",
175
+ 'LOG_FNC_COLOR="#E1D919"',
176
+ "\n",
177
+ "# ffmpeg",
178
+ "FFMPEG_PATH=",
179
+ "# ffprobe",
180
+ "FFPROBE_PATH=",
181
+ "# ffplay",
182
+ "FFPLAY_PATH=",
183
+ "\n",
184
+ "# \u8FD9\u91CC\u8BF7\u52FF\u4FEE\u6539",
185
+ "RUNTIME=node"
186
+ ];
187
+ if (!fs2__default.default.existsSync(env)) {
188
+ fs2__default.default.writeFileSync(env, envData.join("\n"));
189
+ return;
190
+ }
191
+ const value = fs2__default.default.readFileSync(env, "utf-8");
192
+ envData.forEach((item) => {
193
+ if (item.includes("#")) return;
194
+ if (value.includes(item.split("=")[0])) return;
195
+ fs2__default.default.appendFileSync(env, `
196
+ ${item}`);
197
+ });
198
+ };
199
+ var createConfig = () => {
200
+ const defCfg = path2__default.default.join(pkgDir, "default", "config");
201
+ const files = fs2__default.default.readdirSync(defCfg);
202
+ files.forEach((file) => {
203
+ const filePath = path2__default.default.join(defCfg, file);
204
+ const targetPath = path2__default.default.join(dir, "@karinjs", "config");
205
+ const targetFile = path2__default.default.join(targetPath, file);
206
+ if (!fs2__default.default.existsSync(targetFile)) {
207
+ fs2__default.default.copyFileSync(filePath, targetFile);
208
+ return;
209
+ }
210
+ const defData = fs2__default.default.readFileSync(filePath, "utf-8");
211
+ const targetData = fs2__default.default.readFileSync(targetFile, "utf-8");
212
+ const mergedData = { ...JSON.parse(defData), ...JSON.parse(targetData) };
213
+ fs2__default.default.writeFileSync(targetFile, JSON.stringify(mergedData, null, 2));
214
+ });
215
+ };
216
+ var modifyPackageJson = () => {
217
+ const pkg = fs2__default.default.readFileSync(path2__default.default.join(dir, "package.json"), "utf-8");
218
+ const pkgData = JSON.parse(pkg);
219
+ if (pkgData.type === "module") return pkgData;
220
+ pkgData.type = "module";
221
+ fs2__default.default.writeFileSync(path2__default.default.join(dir, "package.json"), JSON.stringify(pkgData, null, 2));
222
+ return pkgData;
223
+ };
224
+ var init = async () => {
225
+ createDir();
226
+ await createOtherFile();
227
+ createConfig();
228
+ modifyPackageJson();
229
+ process.exit(0);
230
+ };
231
+ var start2 = async (env = ".env") => {
232
+ const dir2 = process.cwd();
233
+ const list = env === ".env" ? [".env"] : [".env", env];
234
+ list.forEach((item) => {
235
+ if (!fs2__default.default.existsSync(`${dir2}/${item}`)) {
236
+ if (env === ".env") {
237
+ console.error(`\u672A\u627E\u5230${item}\u6587\u4EF6\uFF0C\u8BF7\u4F7F\u7528 pnpm init \u8FDB\u884C\u521D\u59CB\u5316\u9879\u76EE`);
238
+ } else {
239
+ console.error(`\u672A\u627E\u5230${item}\u6587\u4EF6\uFF0C\u8BF7\u5C06\u5176\u653E\u7F6E\u5728\u9879\u76EE\u6839\u76EE\u5F55`);
240
+ }
241
+ process.exit(1);
242
+ }
243
+ });
244
+ const path3 = list.map((item) => `${dir2}/${item}`);
245
+ dotenv__default.default.config({ path: path3, override: true });
246
+ const index = "../root.js";
247
+ const { karinMain } = await import(index);
248
+ const child = child_process.fork(karinMain);
249
+ child.on("message", (message) => {
250
+ if (message === "restart") {
251
+ child.kill();
252
+ child.removeAllListeners();
253
+ start2(env);
254
+ }
255
+ });
256
+ child.on("exit", (code) => process.exit(code));
257
+ };
258
+ var checkGitInstalled = () => {
259
+ try {
260
+ child_process.execSync("git --version");
261
+ return true;
262
+ } catch {
263
+ return false;
264
+ }
265
+ };
266
+ var updateDependencies = async (packagePath) => {
267
+ try {
268
+ const packageJson = JSON.parse(fs2.readFileSync(packagePath, "utf-8"));
269
+ const dependencies = packageJson.dependencies || {};
270
+ const packagesToUpdate = [];
271
+ for (const [pkg, version] of Object.entries(dependencies)) {
272
+ if (pkg.startsWith("@types/")) {
273
+ continue;
274
+ }
275
+ try {
276
+ const latestVersion = child_process.execSync(`pnpm view ${pkg} version`, { encoding: "utf-8" }).trim();
277
+ const currentVersion = version.replace(/[\^~]/g, "");
278
+ if (latestVersion !== currentVersion) {
279
+ console.log(`\u53D1\u73B0\u65B0\u7248\u672C ${pkg}: ${currentVersion} -> ${latestVersion}`);
280
+ packagesToUpdate.push(`${pkg}@latest`);
281
+ } else {
282
+ console.log(`${pkg} \u5DF2\u7ECF\u662F\u6700\u65B0\u7248\u672C`);
283
+ }
284
+ } catch (error) {
285
+ console.error(`\u68C0\u67E5 ${pkg} \u7248\u672C\u5931\u8D25:`, error);
286
+ }
287
+ }
288
+ if (packagesToUpdate.length > 0) {
289
+ console.log("\n\u5F00\u59CB\u66F4\u65B0\u4EE5\u4E0B\u5305:\n", packagesToUpdate.join("\n"));
290
+ try {
291
+ child_process.execSync(`pnpm update ${packagesToUpdate.join(" ")}`, {
292
+ stdio: "inherit"
293
+ });
294
+ console.log("\n\u6240\u6709\u5305\u66F4\u65B0\u5B8C\u6210");
295
+ } catch (error) {
296
+ console.error("\u6279\u91CF\u66F4\u65B0\u5931\u8D25:", error);
297
+ }
298
+ } else {
299
+ console.log("\n\u6240\u6709\u5305\u90FD\u5DF2\u7ECF\u662F\u6700\u65B0\u7248\u672C");
300
+ }
301
+ } catch (error) {
302
+ console.error("\u66F4\u65B0\u4F9D\u8D56\u5931\u8D25:", error);
303
+ }
304
+ };
305
+ var updatePlugins = async (pluginsPath) => {
306
+ if (!checkGitInstalled()) {
307
+ console.error("\u8BF7\u5148\u5B89\u88C5git");
308
+ return;
309
+ }
310
+ if (!fs2.existsSync(pluginsPath)) {
311
+ console.error("plugins\u76EE\u5F55\u4E0D\u5B58\u5728");
312
+ return;
313
+ }
314
+ const isDirectory = (await promises.stat(pluginsPath)).isDirectory();
315
+ if (!isDirectory) {
316
+ console.error("plugins\u8DEF\u5F84\u4E0D\u662F\u4E00\u4E2A\u76EE\u5F55");
317
+ return;
318
+ }
319
+ const dirs = await promises.readdir(pluginsPath);
320
+ for (const dir2 of dirs) {
321
+ const pluginPath = path2.join(pluginsPath, dir2);
322
+ const gitPath = path2.join(pluginPath, ".git");
323
+ const packageJsonPath = path2.join(pluginPath, "package.json");
324
+ if (!dir2.startsWith("karin-plugin-") || !(await promises.stat(pluginPath)).isDirectory()) {
325
+ continue;
326
+ }
327
+ if (!fs2.existsSync(gitPath)) {
328
+ console.log(`${dir2} \u4E0D\u662Fgit\u4ED3\u5E93\uFF0C\u8DF3\u8FC7`);
329
+ continue;
330
+ }
331
+ try {
332
+ const packageJson = JSON.parse(fs2.readFileSync(packageJsonPath, "utf-8"));
333
+ if (!packageJson.karin) {
334
+ console.log(`${dir2} \u7684package.json\u4E2D\u6CA1\u6709karin\u5B57\u6BB5\uFF0C\u8DF3\u8FC7`);
335
+ continue;
336
+ }
337
+ console.log(`\u6B63\u5728\u66F4\u65B0 ${dir2}...`);
338
+ child_process.execSync("git pull", { cwd: pluginPath, stdio: "inherit" });
339
+ } catch (error) {
340
+ console.error(`\u66F4\u65B0 ${dir2} \u5931\u8D25:`, error);
341
+ }
342
+ }
343
+ };
344
+ var updateAll = async () => {
345
+ try {
346
+ await Promise.all([updateDependencies("./package.json"), updatePlugins("./plugins")]);
347
+ } finally {
348
+ process.exit(0);
349
+ }
350
+ };
351
+ commander.program.version(process.env.npm_package_version, "-v, --version", "\u663E\u793A\u7248\u672C\u53F7");
352
+ commander.program.command(".").description("\u524D\u53F0\u542F\u52A8").action(start2);
353
+ commander.program.command("start").description("\u524D\u53F0\u542F\u52A8").action(start2);
354
+ commander.program.command("pm2").description("\u540E\u53F0\u8FD0\u884C").action(pm2.start);
355
+ commander.program.command("stop").description("\u505C\u6B62\u540E\u53F0\u8FD0\u884C").action(pm2.stop);
356
+ commander.program.command("rs").description("\u91CD\u542Fpm2\u670D\u52A1").action(pm2.restart);
357
+ commander.program.command("log").description("\u67E5\u770B\u65E5\u5FD7").action(pm2.log);
358
+ commander.program.command("up").description("\u66F4\u65B0\u63D2\u4EF6").action(updateAll);
359
+ commander.program.command("init").description("\u521D\u59CB\u5316\u9879\u76EE").action(init);
360
+ commander.program.parse(process.argv);
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node