@coze-arch/cli 0.0.1-alpha.77c1b0 → 0.0.1-alpha.a1ca15

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 (114) hide show
  1. package/lib/__templates__/expo/.cozeproj/scripts/deploy_build.sh +21 -15
  2. package/lib/__templates__/expo/.cozeproj/scripts/deploy_run.sh +28 -14
  3. package/lib/__templates__/expo/_npmrc +1 -1
  4. package/lib/__templates__/expo/client/scripts/install-missing-deps.js +36 -12
  5. package/lib/__templates__/expo/metro.config.js +15 -15
  6. package/lib/__templates__/expo/package.json +12 -2
  7. package/lib/__templates__/expo/pnpm-lock.yaml +131 -4
  8. package/lib/__templates__/nextjs/.coze +3 -3
  9. package/lib/__templates__/nextjs/README.md +341 -19
  10. package/lib/__templates__/nextjs/_npmrc +1 -1
  11. package/lib/__templates__/nextjs/components.json +21 -0
  12. package/lib/__templates__/nextjs/package.json +54 -1
  13. package/lib/__templates__/nextjs/pnpm-lock.yaml +7947 -1523
  14. package/lib/__templates__/nextjs/scripts/dev.sh +2 -1
  15. package/lib/__templates__/nextjs/src/app/globals.css +99 -8
  16. package/lib/__templates__/nextjs/src/components/ui/accordion.tsx +66 -0
  17. package/lib/__templates__/nextjs/src/components/ui/alert-dialog.tsx +157 -0
  18. package/lib/__templates__/nextjs/src/components/ui/alert.tsx +66 -0
  19. package/lib/__templates__/nextjs/src/components/ui/aspect-ratio.tsx +11 -0
  20. package/lib/__templates__/nextjs/src/components/ui/avatar.tsx +53 -0
  21. package/lib/__templates__/nextjs/src/components/ui/badge.tsx +46 -0
  22. package/lib/__templates__/nextjs/src/components/ui/breadcrumb.tsx +109 -0
  23. package/lib/__templates__/nextjs/src/components/ui/button-group.tsx +83 -0
  24. package/lib/__templates__/nextjs/src/components/ui/button.tsx +62 -0
  25. package/lib/__templates__/nextjs/src/components/ui/calendar.tsx +220 -0
  26. package/lib/__templates__/nextjs/src/components/ui/card.tsx +92 -0
  27. package/lib/__templates__/nextjs/src/components/ui/carousel.tsx +241 -0
  28. package/lib/__templates__/nextjs/src/components/ui/chart.tsx +357 -0
  29. package/lib/__templates__/nextjs/src/components/ui/checkbox.tsx +32 -0
  30. package/lib/__templates__/nextjs/src/components/ui/collapsible.tsx +33 -0
  31. package/lib/__templates__/nextjs/src/components/ui/command.tsx +184 -0
  32. package/lib/__templates__/nextjs/src/components/ui/context-menu.tsx +252 -0
  33. package/lib/__templates__/nextjs/src/components/ui/dialog.tsx +143 -0
  34. package/lib/__templates__/nextjs/src/components/ui/drawer.tsx +135 -0
  35. package/lib/__templates__/nextjs/src/components/ui/dropdown-menu.tsx +257 -0
  36. package/lib/__templates__/nextjs/src/components/ui/empty.tsx +104 -0
  37. package/lib/__templates__/nextjs/src/components/ui/field.tsx +248 -0
  38. package/lib/__templates__/nextjs/src/components/ui/form.tsx +167 -0
  39. package/lib/__templates__/nextjs/src/components/ui/hover-card.tsx +44 -0
  40. package/lib/__templates__/nextjs/src/components/ui/input-group.tsx +170 -0
  41. package/lib/__templates__/nextjs/src/components/ui/input-otp.tsx +77 -0
  42. package/lib/__templates__/nextjs/src/components/ui/input.tsx +21 -0
  43. package/lib/__templates__/nextjs/src/components/ui/item.tsx +193 -0
  44. package/lib/__templates__/nextjs/src/components/ui/kbd.tsx +28 -0
  45. package/lib/__templates__/nextjs/src/components/ui/label.tsx +24 -0
  46. package/lib/__templates__/nextjs/src/components/ui/menubar.tsx +276 -0
  47. package/lib/__templates__/nextjs/src/components/ui/navigation-menu.tsx +168 -0
  48. package/lib/__templates__/nextjs/src/components/ui/pagination.tsx +127 -0
  49. package/lib/__templates__/nextjs/src/components/ui/popover.tsx +48 -0
  50. package/lib/__templates__/nextjs/src/components/ui/progress.tsx +31 -0
  51. package/lib/__templates__/nextjs/src/components/ui/radio-group.tsx +45 -0
  52. package/lib/__templates__/nextjs/src/components/ui/resizable.tsx +56 -0
  53. package/lib/__templates__/nextjs/src/components/ui/scroll-area.tsx +58 -0
  54. package/lib/__templates__/nextjs/src/components/ui/select.tsx +190 -0
  55. package/lib/__templates__/nextjs/src/components/ui/separator.tsx +28 -0
  56. package/lib/__templates__/nextjs/src/components/ui/sheet.tsx +139 -0
  57. package/lib/__templates__/nextjs/src/components/ui/sidebar.tsx +726 -0
  58. package/lib/__templates__/nextjs/src/components/ui/skeleton.tsx +13 -0
  59. package/lib/__templates__/nextjs/src/components/ui/slider.tsx +63 -0
  60. package/lib/__templates__/nextjs/src/components/ui/sonner.tsx +40 -0
  61. package/lib/__templates__/nextjs/src/components/ui/spinner.tsx +16 -0
  62. package/lib/__templates__/nextjs/src/components/ui/switch.tsx +31 -0
  63. package/lib/__templates__/nextjs/src/components/ui/table.tsx +116 -0
  64. package/lib/__templates__/nextjs/src/components/ui/tabs.tsx +66 -0
  65. package/lib/__templates__/nextjs/src/components/ui/textarea.tsx +18 -0
  66. package/lib/__templates__/nextjs/src/components/ui/toggle-group.tsx +83 -0
  67. package/lib/__templates__/nextjs/src/components/ui/toggle.tsx +47 -0
  68. package/lib/__templates__/nextjs/src/components/ui/tooltip.tsx +61 -0
  69. package/lib/__templates__/nextjs/src/hooks/use-mobile.ts +19 -0
  70. package/lib/__templates__/nextjs/src/lib/utils.ts +6 -0
  71. package/lib/__templates__/nextjs/template.config.js +2 -2
  72. package/lib/__templates__/templates.json +1 -39
  73. package/lib/__templates__/vite/.coze +3 -3
  74. package/lib/__templates__/vite/README.md +204 -26
  75. package/lib/__templates__/vite/_npmrc +1 -1
  76. package/lib/__templates__/vite/template.config.js +3 -3
  77. package/lib/cli.js +367 -212
  78. package/package.json +5 -2
  79. package/lib/__templates__/react-rsbuild/.coze +0 -11
  80. package/lib/__templates__/react-rsbuild/.vscode/settings.json +0 -121
  81. package/lib/__templates__/react-rsbuild/README.md +0 -61
  82. package/lib/__templates__/react-rsbuild/_gitignore +0 -97
  83. package/lib/__templates__/react-rsbuild/_npmrc +0 -22
  84. package/lib/__templates__/react-rsbuild/package.json +0 -31
  85. package/lib/__templates__/react-rsbuild/pnpm-lock.yaml +0 -997
  86. package/lib/__templates__/react-rsbuild/rsbuild.config.ts +0 -13
  87. package/lib/__templates__/react-rsbuild/scripts/build.sh +0 -14
  88. package/lib/__templates__/react-rsbuild/scripts/dev.sh +0 -51
  89. package/lib/__templates__/react-rsbuild/scripts/start.sh +0 -15
  90. package/lib/__templates__/react-rsbuild/src/App.tsx +0 -60
  91. package/lib/__templates__/react-rsbuild/src/index.css +0 -21
  92. package/lib/__templates__/react-rsbuild/src/index.html +0 -12
  93. package/lib/__templates__/react-rsbuild/src/index.tsx +0 -16
  94. package/lib/__templates__/react-rsbuild/tailwind.config.js +0 -9
  95. package/lib/__templates__/react-rsbuild/template.config.js +0 -54
  96. package/lib/__templates__/react-rsbuild/tsconfig.json +0 -17
  97. package/lib/__templates__/rsbuild/.coze +0 -11
  98. package/lib/__templates__/rsbuild/.vscode/settings.json +0 -7
  99. package/lib/__templates__/rsbuild/README.md +0 -61
  100. package/lib/__templates__/rsbuild/_gitignore +0 -97
  101. package/lib/__templates__/rsbuild/_npmrc +0 -22
  102. package/lib/__templates__/rsbuild/package.json +0 -24
  103. package/lib/__templates__/rsbuild/pnpm-lock.yaml +0 -888
  104. package/lib/__templates__/rsbuild/rsbuild.config.ts +0 -12
  105. package/lib/__templates__/rsbuild/scripts/build.sh +0 -14
  106. package/lib/__templates__/rsbuild/scripts/dev.sh +0 -51
  107. package/lib/__templates__/rsbuild/scripts/start.sh +0 -15
  108. package/lib/__templates__/rsbuild/src/index.css +0 -21
  109. package/lib/__templates__/rsbuild/src/index.html +0 -12
  110. package/lib/__templates__/rsbuild/src/index.ts +0 -5
  111. package/lib/__templates__/rsbuild/src/main.ts +0 -65
  112. package/lib/__templates__/rsbuild/tailwind.config.js +0 -9
  113. package/lib/__templates__/rsbuild/template.config.js +0 -56
  114. package/lib/__templates__/rsbuild/tsconfig.json +0 -16
@@ -29,19 +29,25 @@ check_command() {
29
29
  write_log() {
30
30
  local level="${1:-INFO}"
31
31
  local msg="${2:-}"
32
- python - "$LOG_FILE" "$level" "$msg" <<'PY'
33
- import os,sys,json,time
34
- from datetime import datetime, timezone, timedelta
35
- path, level, msg = sys.argv[1], sys.argv[2].upper(), sys.argv[3]
36
- ts = int(time.time()*1000)
37
- tz = timezone(timedelta(hours=8))
38
- dt_str = datetime.now(tz).strftime('%Y-%m-%d %H:%M:%S')
39
- msg = msg.replace('\\n', '\n')
40
- msg = f"{dt_str} [{level}] {msg}"
41
- with open(path,'a',encoding='utf-8',buffering=1) as f:
42
- f.write(json.dumps({"level":level,"message":msg,"timestamp":ts},ensure_ascii=False)+'\n')
43
- f.flush(); os.fsync(f.fileno())
44
- PY
32
+ node -e '
33
+ const fs=require("fs");
34
+ const path=process.argv[1];
35
+ const level=(process.argv[2]||"").toUpperCase();
36
+ let msg=String(process.argv[3]||"");
37
+ const ts=Date.now();
38
+ const dt=new Date();
39
+ const parts=new Intl.DateTimeFormat("en-GB",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:false}).formatToParts(dt);
40
+ const o={};
41
+ for(const p of parts){o[p.type]=p.value}
42
+ const dt_str=`${o.year}-${o.month}-${o.day} ${o.hour}:${o.minute}:${o.second}`;
43
+ msg=msg.replace(/\\n/g,"\n");
44
+ msg=`${dt_str} [${level}] ${msg}`;
45
+ const record=JSON.stringify({level, message: msg, timestamp: ts},null,0);
46
+ const fd=fs.openSync(path,"a");
47
+ fs.writeSync(fd, record+"\n", null, "utf8");
48
+ fs.fsyncSync(fd);
49
+ fs.closeSync(fd);
50
+ ' "$LOG_FILE" "$level" "$msg"
45
51
 
46
52
  case "$level" in
47
53
  INFO) info "$msg" ;;
@@ -63,8 +69,8 @@ fi
63
69
  write_log "INFO" "开始执行构建脚本(build_dev.sh)..."
64
70
  write_log "INFO" "正在检查依赖命令是否存在..."
65
71
  # 检查核心命令
66
- check_command "pip"
67
- check_command "python"
72
+ # check_command "pip"
73
+ # check_command "python"
68
74
  check_command "pnpm"
69
75
  check_command "npm"
70
76
 
@@ -97,19 +97,25 @@ ensure_port() {
97
97
  write_log() {
98
98
  local level="${1:-INFO}"
99
99
  local msg="${2:-}"
100
- python - "$LOG_FILE" "$level" "$msg" <<'PY'
101
- import os,sys,json,time
102
- from datetime import datetime, timezone, timedelta
103
- path, level, msg = sys.argv[1], sys.argv[2].upper(), sys.argv[3]
104
- ts = int(time.time()*1000)
105
- msg = msg.replace('\\n', '\n')
106
- tz = timezone(timedelta(hours=8))
107
- dt_str = datetime.now(tz).strftime('%Y-%m-%d %H:%M:%S')
108
- msg = f"{dt_str} [{level}] {msg}"
109
- with open(path,'a',encoding='utf-8',buffering=1) as f:
110
- f.write(json.dumps({"level":level,"message":msg,"timestamp":ts},ensure_ascii=False)+'\n')
111
- f.flush(); os.fsync(f.fileno())
112
- PY
100
+ node -e '
101
+ const fs=require("fs");
102
+ const path=process.argv[1];
103
+ const level=(process.argv[2]||"").toUpperCase();
104
+ let msg=String(process.argv[3]||"");
105
+ const ts=Date.now();
106
+ msg=msg.replace(/\\n/g,"\n");
107
+ const dt=new Date();
108
+ const parts=new Intl.DateTimeFormat("en-GB",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:false}).formatToParts(dt);
109
+ const o={};
110
+ for(const p of parts){o[p.type]=p.value}
111
+ const dt_str=`${o.year}-${o.month}-${o.day} ${o.hour}:${o.minute}:${o.second}`;
112
+ msg=`${dt_str} [${level}] ${msg}`;
113
+ const record=JSON.stringify({level, message: msg, timestamp: ts},null,0);
114
+ const fd=fs.openSync(path,"a");
115
+ fs.writeSync(fd, record+"\n", null, "utf8");
116
+ fs.fsyncSync(fd);
117
+ fs.closeSync(fd);
118
+ ' "$LOG_FILE" "$level" "$msg"
113
119
  case "$level" in
114
120
  INFO) echo -e "\033[32m[INFO] $msg\033[0m" ;;
115
121
  WARN) echo -e "\033[33m[WARN] $msg\033[0m" ;;
@@ -157,7 +163,7 @@ write_log "INFO" "==================== 开始启动 ===================="
157
163
  write_log "INFO" "开始执行服务启动脚本(start_dev.sh)..."
158
164
  write_log "INFO" "正在检查依赖命令和目录是否存在..."
159
165
  # 检查核心命令
160
- check_command "python"
166
+ # check_command "python"
161
167
  check_command "npm"
162
168
  check_command "pnpm"
163
169
  check_command "lsof"
@@ -254,4 +260,12 @@ if [ -f "$ROOT_DIR/post_run.py" ]; then
254
260
  write_log "INFO" "启动检查结束"
255
261
  fi
256
262
 
263
+ write_log "INFO" "检查 Nginx 端口 (5000)..."
264
+ if is_port_free 5000; then
265
+ write_log "INFO" "端口 5000 未被占用,正在启动 Nginx..."
266
+ service nginx start
267
+ else
268
+ write_log "INFO" "端口 5000 已被占用,跳过 Nginx 启动"
269
+ fi
270
+
257
271
  write_log "INFO" "==================== 服务启动完成 ===================="
@@ -1,4 +1,4 @@
1
- registry=https://registry.npmjs.org
1
+ registry=https://registry.npmmirror.com
2
2
 
3
3
  strictStorePkgContentCheck=false
4
4
  verifyStoreIntegrity=false
@@ -18,7 +18,7 @@ try {
18
18
  try {
19
19
  depcheckOutput = execSync('npx depcheck --json', {
20
20
  encoding: 'utf-8',
21
- stdio: ['pipe', 'pipe', 'pipe']
21
+ stdio: ['pipe', 'pipe', 'pipe'],
22
22
  });
23
23
  } catch (execError) {
24
24
  // depcheck 返回非零退出码时仍然有输出
@@ -30,10 +30,34 @@ try {
30
30
  }
31
31
 
32
32
  const result = JSON.parse(depcheckOutput);
33
-
33
+
34
34
  // 获取缺失的依赖
35
35
  const missing = result.missing || {};
36
- const missingPackages = Object.keys(missing).filter(pkg => !pkg.startsWith('@api/') && !pkg.startsWith('@/') && pkg !== '@api');
36
+
37
+ // 需要忽略的文件模式
38
+ const ignoreFilePatterns = [
39
+ /template\.config\.(ts|js)$/, // 模板配置文件
40
+ /\.template\./, // 其他模板文件
41
+ ];
42
+
43
+ // 过滤包:排除内部别名和只被模板文件引用的包
44
+ const missingPackages = Object.keys(missing).filter(pkg => {
45
+ // 排除内部路径别名
46
+ if (pkg.startsWith('@api/') || pkg.startsWith('@/') || pkg === '@api') {
47
+ return false;
48
+ }
49
+
50
+ // 获取引用该包的文件列表
51
+ const referencingFiles = missing[pkg] || [];
52
+
53
+ // 过滤掉模板配置文件
54
+ const nonTemplateFiles = referencingFiles.filter(file => {
55
+ return !ignoreFilePatterns.some(pattern => pattern.test(file));
56
+ });
57
+
58
+ // 只有当存在非模板文件引用时才保留该包
59
+ return nonTemplateFiles.length > 0;
60
+ });
37
61
 
38
62
  if (missingPackages.length === 0) {
39
63
  console.log('✅ 没有发现缺失的依赖!');
@@ -44,30 +68,31 @@ try {
44
68
  missingPackages.forEach((pkg, index) => {
45
69
  const files = missing[pkg];
46
70
  console.log(` ${index + 1}. ${pkg}`);
47
- console.log(` 被引用于: ${files.slice(0, 2).join(', ')}${files.length > 2 ? ' ...' : ''}`);
71
+ console.log(
72
+ ` 被引用于: ${files.slice(0, 2).join(', ')}${files.length > 2 ? ' ...' : ''}`,
73
+ );
48
74
  });
49
75
 
50
76
  console.log('\n🚀 开始安装...\n');
51
77
 
52
78
  // 使用 expo install 安装所有缺失的包
53
79
  const packagesToInstall = missingPackages.join(' ');
54
-
80
+
55
81
  try {
56
82
  execSync(`pnpm expo install ${packagesToInstall}`, {
57
- stdio: 'inherit'
83
+ stdio: 'inherit',
58
84
  });
59
-
85
+
60
86
  console.log('\n✅ 所有缺失的依赖已安装完成!');
61
87
  } catch (installError) {
62
88
  console.log('\n⚠️ expo install 失败,尝试使用 npm install...\n');
63
-
89
+
64
90
  execSync(`npm install ${packagesToInstall}`, {
65
- stdio: 'inherit'
91
+ stdio: 'inherit',
66
92
  });
67
-
93
+
68
94
  console.log('\n✅ 所有缺失的依赖已通过 npm 安装完成!');
69
95
  }
70
-
71
96
  } catch (error) {
72
97
  if (error.message.includes('depcheck')) {
73
98
  console.error('❌ depcheck 未安装或运行失败');
@@ -77,4 +102,3 @@ try {
77
102
  }
78
103
  process.exit(1);
79
104
  }
80
-
@@ -8,29 +8,29 @@ const config = getDefaultConfig(__dirname);
8
8
  const existingBlockList = [].concat(config.resolver.blockList || []);
9
9
 
10
10
  config.resolver.blockList = [
11
- ...existingBlockList,
12
- /.*\/\.expo\/.*/, // Expo 的缓存和构建产物目录
11
+ ...existingBlockList,
12
+ /.*\/\.expo\/.*/, // Expo 的缓存和构建产物目录
13
13
 
14
- // 1. 原生代码 (Java/C++/Objective-C)
15
- /.*\/react-native\/ReactAndroid\/.*/,
16
- /.*\/react-native\/ReactCommon\/.*/,
14
+ // 1. 原生代码 (Java/C++/Objective-C)
15
+ /.*\/react-native\/ReactAndroid\/.*/,
16
+ /.*\/react-native\/ReactCommon\/.*/,
17
17
 
18
- // 2. 纯开发和调试工具
19
- // 这些工具只在开发电脑上运行,不会被打包到应用中
20
- /.*\/@typescript-eslint\/eslint-plugin\/.*/,
18
+ // 2. 纯开发和调试工具
19
+ // 这些工具只在开发电脑上运行,不会被打包到应用中
20
+ /.*\/@typescript-eslint\/eslint-plugin\/.*/,
21
21
 
22
- // 3. 构建时数据
23
- // 这个数据库只在打包过程中使用,应用运行时不需要
24
- /.*\/caniuse-lite\/data\/.*/,
22
+ // 3. 构建时数据
23
+ // 这个数据库只在打包过程中使用,应用运行时不需要
24
+ /.*\/caniuse-lite\/data\/.*/,
25
25
 
26
- // 4. 通用规则
27
- /.*\/__tests__\/.*/, // 排除所有测试目录
28
- /.*\.git\/.*/, // 排除 Git 目录
26
+ // 4. 通用规则
27
+ /.*\/__tests__\/.*/, // 排除所有测试目录
28
+ /.*\.git\/.*/, // 排除 Git 目录
29
29
  ];
30
30
 
31
31
  /*
32
32
  const apiProxy = createProxyMiddleware({
33
- target: 'http://localhost:3000',
33
+ target: 'http://localhost:5000',
34
34
  logLevel: 'debug',
35
35
  });
36
36
 
@@ -7,10 +7,10 @@
7
7
  "build": "bash .cozeproj/scripts/deploy_build.sh",
8
8
  "check-deps": "npx depcheck",
9
9
  "dev": "bash .cozeproj/scripts/deploy_run.sh",
10
- "install-missing": "node ./client/scripts/install-missing-deps.js",
11
- "lint": "expo lint",
12
10
  "preinstall": "npx only-allow pnpm",
13
11
  "postinstall": "node ./client/scripts/install-missing-deps.js",
12
+ "install-missing": "node ./client/scripts/install-missing-deps.js",
13
+ "lint": "expo lint",
14
14
  "server": "NODE_ENV=development tsx ./src/index.ts",
15
15
  "start": "expo start --web",
16
16
  "test": "jest --watchAll"
@@ -19,6 +19,8 @@
19
19
  "preset": "jest-expo"
20
20
  },
21
21
  "dependencies": {
22
+ "@aws-sdk/client-s3": "^3.958.0",
23
+ "@aws-sdk/lib-storage": "^3.958.0",
22
24
  "@expo/metro-runtime": "^6.1.2",
23
25
  "@expo/vector-icons": "^15.0.0",
24
26
  "@react-native-async-storage/async-storage": "^2.2.0",
@@ -30,8 +32,12 @@
30
32
  "@react-navigation/native": "^7.0.14",
31
33
  "ajv": "^8.17.1",
32
34
  "ajv-formats": "^3.0.1",
35
+ "connect": "^3.7.0",
33
36
  "coze-coding-dev-sdk": "0.5.0",
34
37
  "dayjs": "^1.11.19",
38
+ "drizzle-kit": "^0.31.8",
39
+ "drizzle-orm": "^0.45.1",
40
+ "drizzle-zod": "^0.8.3",
35
41
  "expo": "^54.0.7",
36
42
  "expo-auth-session": "^7.0.9",
37
43
  "expo-av": "~16.0.6",
@@ -52,6 +58,8 @@
52
58
  "expo-system-ui": "~6.0.9",
53
59
  "expo-web-browser": "~15.0.10",
54
60
  "express": "^4.22.1",
61
+ "multer": "^2.0.2",
62
+ "pg": "^8.16.3",
55
63
  "react": "19.1.0",
56
64
  "react-dom": "19.1.0",
57
65
  "react-native": "0.81.5",
@@ -74,6 +82,8 @@
74
82
  "@eslint/js": "^9.27.0",
75
83
  "@types/express": "^5.0.6",
76
84
  "@types/jest": "^29.5.12",
85
+ "@types/multer": "^2.0.0",
86
+ "@types/pg": "^8.16.0",
77
87
  "@types/react": "~19.1.0",
78
88
  "@types/react-test-renderer": "19.1.0",
79
89
  "babel-plugin-module-resolver": "^5.0.2",