@coze-arch/cli 0.1.4-alpha.b94eab → 0.1.4-alpha.d384e3
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 +3 -0
- package/lib/__templates__/expo/.cozeproj/scripts/dev_build.ps1 +10 -0
- package/lib/__templates__/expo/.cozeproj/scripts/dev_build.sh +3 -3
- package/lib/__templates__/expo/.cozeproj/scripts/dev_run.ps1 +74 -0
- package/lib/__templates__/expo/.cozeproj/scripts/dev_run.sh +2 -0
- package/lib/__templates__/expo/.cozeproj/scripts/prepare-node-modules.sh +149 -0
- package/lib/__templates__/expo/.cozeproj/scripts/prod_build.sh +3 -3
- package/lib/__templates__/expo/.cozeproj/scripts/validate.ps1 +7 -0
- package/lib/__templates__/expo/client/components/Screen.tsx +65 -25
- package/lib/__templates__/expo/client/heroui/components/toast/toast.tsx +6 -2
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-controllable-state.ts +1 -1
- package/lib/__templates__/expo/pnpm-lock.yaml +5 -5
- package/lib/__templates__/expo/server/package.json +1 -1
- package/lib/__templates__/nextjs/eslint.config.mjs +11 -5
- package/lib/__templates__/nextjs/next.config.ts +10 -0
- package/lib/__templates__/nextjs/package.json +3 -6
- package/lib/__templates__/nextjs/pnpm-lock.yaml +19 -950
- package/lib/__templates__/nextjs/scripts/build.ps1 +1 -1
- package/lib/__templates__/nextjs/scripts/build.sh +2 -2
- package/lib/__templates__/nextjs/scripts/dev.ps1 +2 -2
- package/lib/__templates__/nextjs/scripts/dev.sh +77 -7
- package/lib/__templates__/nextjs/scripts/prepare-node-modules.sh +149 -0
- package/lib/__templates__/nextjs/scripts/prepare.sh +1 -4
- package/lib/__templates__/nextjs/src/app/layout.tsx +0 -4
- package/lib/__templates__/nextjs/src/server.ts +1 -1
- package/lib/__templates__/nextjs/template.config.js +0 -59
- package/lib/__templates__/nuxt-vue/package.json +1 -1
- package/lib/__templates__/nuxt-vue/pnpm-lock.yaml +5 -5
- package/lib/__templates__/nuxt-vue/scripts/build.sh +1 -1
- package/lib/__templates__/nuxt-vue/scripts/dev.sh +2 -0
- package/lib/__templates__/nuxt-vue/scripts/prepare-node-modules.sh +149 -0
- package/lib/__templates__/nuxt-vue/scripts/prepare.sh +1 -4
- package/lib/__templates__/pi-agent/package.json +1 -1
- package/lib/__templates__/pi-agent/pnpm-lock.yaml +5 -5
- package/lib/__templates__/taro/.coze +4 -0
- package/lib/__templates__/taro/.cozeproj/scripts/deploy_build.sh +3 -2
- package/lib/__templates__/taro/.cozeproj/scripts/dev_build.ps1 +3 -0
- package/lib/__templates__/taro/.cozeproj/scripts/dev_build.sh +3 -0
- package/lib/__templates__/taro/.cozeproj/scripts/dev_run.ps1 +62 -0
- package/lib/__templates__/taro/.cozeproj/scripts/dev_run.sh +3 -1
- package/lib/__templates__/taro/.cozeproj/scripts/pack.ps1 +7 -0
- package/lib/__templates__/taro/.cozeproj/scripts/prepare-node-modules.sh +149 -0
- package/lib/__templates__/taro/.cozeproj/scripts/validate.ps1 +7 -0
- package/lib/__templates__/taro/pnpm-lock.yaml +5 -5
- package/lib/__templates__/taro/server/package.json +1 -1
- package/lib/__templates__/vite/package.json +1 -1
- package/lib/__templates__/vite/pnpm-lock.yaml +5 -5
- package/lib/__templates__/vite/scripts/build.sh +1 -1
- package/lib/__templates__/vite/scripts/dev.sh +2 -0
- package/lib/__templates__/vite/scripts/prepare-node-modules.sh +149 -0
- package/lib/__templates__/vite/scripts/prepare.sh +1 -4
- package/lib/__templates__/vite/template.config.js +0 -59
- package/lib/cli.js +35 -12
- package/package.json +1 -1
- package/lib/__templates__/nextjs/.babelrc +0 -15
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Install dependencies on local disk and expose them to the source tree by symlink.
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
|
|
6
|
+
if [ "$(basename "$(dirname "$SCRIPT_DIR")")" = ".cozeproj" ]; then
|
|
7
|
+
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd -P)"
|
|
8
|
+
else
|
|
9
|
+
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd -P)"
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
command -v pnpm >/dev/null 2>&1 || {
|
|
13
|
+
echo "[node_modules] pnpm is required" >&2
|
|
14
|
+
exit 1
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
DRIVE_ROOT="${COZE_DRIVE_ROOT:-/Coze/Drive}"
|
|
18
|
+
if [ -d "$DRIVE_ROOT" ]; then
|
|
19
|
+
DRIVE_ROOT="$(cd "$DRIVE_ROOT" && pwd -P)"
|
|
20
|
+
else
|
|
21
|
+
DRIVE_ROOT="${DRIVE_ROOT%/}"
|
|
22
|
+
fi
|
|
23
|
+
case "$PROJECT_ROOT" in
|
|
24
|
+
"$DRIVE_ROOT"|"$DRIVE_ROOT"/*) ;;
|
|
25
|
+
*)
|
|
26
|
+
(cd "$PROJECT_ROOT" && pnpm install "$@")
|
|
27
|
+
exit 0
|
|
28
|
+
;;
|
|
29
|
+
esac
|
|
30
|
+
|
|
31
|
+
NM_ROOT="/tmp/nm"
|
|
32
|
+
PROJECT_ID="$(basename "$PROJECT_ROOT")-$(printf '%s' "$PROJECT_ROOT" | cksum | awk '{print $1}')"
|
|
33
|
+
mkdir -p "$NM_ROOT"
|
|
34
|
+
WORK_DIR="$NM_ROOT/$PROJECT_ID"
|
|
35
|
+
case "$WORK_DIR" in
|
|
36
|
+
"$DRIVE_ROOT"|"$DRIVE_ROOT"/*)
|
|
37
|
+
echo "[node_modules] local dependency directory must not be on Coze Drive: $WORK_DIR" >&2
|
|
38
|
+
exit 1
|
|
39
|
+
;;
|
|
40
|
+
esac
|
|
41
|
+
|
|
42
|
+
LOCK_DIR="$NM_ROOT/$PROJECT_ID.lock"
|
|
43
|
+
while ! mkdir "$LOCK_DIR" 2>/dev/null; do
|
|
44
|
+
echo "[node_modules] Waiting for another dependency preparation for this project..."
|
|
45
|
+
sleep 1
|
|
46
|
+
done
|
|
47
|
+
trap 'rmdir "$LOCK_DIR" 2>/dev/null || true' EXIT
|
|
48
|
+
|
|
49
|
+
mkdir -p "$WORK_DIR"
|
|
50
|
+
|
|
51
|
+
# Previous versions mirrored the whole project into WORK_DIR. That gives pnpm
|
|
52
|
+
# and framework dev servers two paths for the same source tree, which breaks
|
|
53
|
+
# file watching and on-demand compilation. Keep only managed local outputs.
|
|
54
|
+
cleanup_legacy_workspace() {
|
|
55
|
+
local workspace_dir="$1" entry name
|
|
56
|
+
if [ -L "$workspace_dir" ] || { [ -e "$workspace_dir" ] && [ ! -d "$workspace_dir" ]; }; then
|
|
57
|
+
rm -rf "$workspace_dir"
|
|
58
|
+
return
|
|
59
|
+
fi
|
|
60
|
+
if [ ! -d "$workspace_dir" ]; then
|
|
61
|
+
return 0
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
while IFS= read -r -d '' entry; do
|
|
65
|
+
name="$(basename "$entry")"
|
|
66
|
+
[ "$name" = "node_modules" ] || rm -rf "$entry"
|
|
67
|
+
done < <(find "$workspace_dir" -mindepth 1 -maxdepth 1 -print0)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
cleanup_legacy_shadow_project() {
|
|
71
|
+
local entry name
|
|
72
|
+
while IFS= read -r -d '' entry; do
|
|
73
|
+
name="$(basename "$entry")"
|
|
74
|
+
case "$name" in
|
|
75
|
+
node_modules|client|server) continue ;;
|
|
76
|
+
esac
|
|
77
|
+
rm -rf "$entry"
|
|
78
|
+
done < <(find "$WORK_DIR" -mindepth 1 -maxdepth 1 -print0)
|
|
79
|
+
|
|
80
|
+
for workspace in client server; do
|
|
81
|
+
cleanup_legacy_workspace "$WORK_DIR/$workspace"
|
|
82
|
+
done
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
copy_install_metadata() {
|
|
86
|
+
local filename source_file target_file workspace
|
|
87
|
+
for filename in package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc; do
|
|
88
|
+
source_file="$PROJECT_ROOT/$filename"
|
|
89
|
+
target_file="$WORK_DIR/$filename"
|
|
90
|
+
rm -f "$target_file"
|
|
91
|
+
if [ -f "$source_file" ]; then
|
|
92
|
+
cp "$source_file" "$target_file"
|
|
93
|
+
fi
|
|
94
|
+
done
|
|
95
|
+
|
|
96
|
+
for workspace in client server; do
|
|
97
|
+
if [ -f "$PROJECT_ROOT/$workspace/package.json" ]; then
|
|
98
|
+
mkdir -p "$WORK_DIR/$workspace"
|
|
99
|
+
rm -f "$WORK_DIR/$workspace/package.json"
|
|
100
|
+
cp "$PROJECT_ROOT/$workspace/package.json" "$WORK_DIR/$workspace/package.json"
|
|
101
|
+
else
|
|
102
|
+
rm -rf "$WORK_DIR/$workspace"
|
|
103
|
+
fi
|
|
104
|
+
done
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
link_node_modules() {
|
|
108
|
+
local source_dir="$1" target_dir="$2"
|
|
109
|
+
local current=""
|
|
110
|
+
mkdir -p "$target_dir"
|
|
111
|
+
if [ -L "$source_dir/node_modules" ]; then
|
|
112
|
+
current="$(readlink "$source_dir/node_modules")"
|
|
113
|
+
case "$current" in
|
|
114
|
+
"$NM_ROOT"/*/node_modules|"$NM_ROOT"/*/*/node_modules) ;;
|
|
115
|
+
*)
|
|
116
|
+
echo "[node_modules] refusing to replace unmanaged symlink: $source_dir/node_modules" >&2
|
|
117
|
+
exit 1
|
|
118
|
+
;;
|
|
119
|
+
esac
|
|
120
|
+
rm "$source_dir/node_modules"
|
|
121
|
+
elif [ -e "$source_dir/node_modules" ]; then
|
|
122
|
+
rm -rf "$source_dir/node_modules"
|
|
123
|
+
fi
|
|
124
|
+
ln -s "$target_dir" "$source_dir/node_modules"
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
cleanup_legacy_shadow_project
|
|
128
|
+
copy_install_metadata
|
|
129
|
+
|
|
130
|
+
echo "[node_modules] Installing dependencies in $WORK_DIR"
|
|
131
|
+
if ! (cd "$WORK_DIR" && pnpm install "$@"); then
|
|
132
|
+
exit 1
|
|
133
|
+
fi
|
|
134
|
+
|
|
135
|
+
if [ -f "$WORK_DIR/pnpm-lock.yaml" ]; then
|
|
136
|
+
temporary_lockfile="$(mktemp "$PROJECT_ROOT/.pnpm-lock.yaml.XXXXXX")"
|
|
137
|
+
cp "$WORK_DIR/pnpm-lock.yaml" "$temporary_lockfile"
|
|
138
|
+
chmod 0644 "$temporary_lockfile"
|
|
139
|
+
mv -f "$temporary_lockfile" "$PROJECT_ROOT/pnpm-lock.yaml"
|
|
140
|
+
fi
|
|
141
|
+
|
|
142
|
+
link_node_modules "$PROJECT_ROOT" "$WORK_DIR/node_modules"
|
|
143
|
+
for workspace in client server; do
|
|
144
|
+
if [ -f "$PROJECT_ROOT/$workspace/package.json" ]; then
|
|
145
|
+
link_node_modules "$PROJECT_ROOT/$workspace" "$WORK_DIR/$workspace/node_modules"
|
|
146
|
+
fi
|
|
147
|
+
done
|
|
148
|
+
|
|
149
|
+
echo "[node_modules] Dependencies ready"
|
|
@@ -6,7 +6,4 @@ COZE_WORKSPACE_PATH="${COZE_WORKSPACE_PATH:-$(pwd)}"
|
|
|
6
6
|
cd "${COZE_WORKSPACE_PATH}"
|
|
7
7
|
|
|
8
8
|
echo "Installing dependencies..."
|
|
9
|
-
|
|
10
|
-
if command -v coze-dev > /dev/null 2>&1 && coze-dev check-bins --help > /dev/null 2>&1; then
|
|
11
|
-
coze-dev check-bins --fix
|
|
12
|
-
fi
|
|
9
|
+
bash "$COZE_WORKSPACE_PATH/scripts/prepare-node-modules.sh" --prefer-frozen-lockfile --prefer-offline --loglevel debug --reporter=append-only
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
import { spawn } from 'child_process';
|
|
3
|
-
import { resolve, join, basename } from 'path';
|
|
4
|
-
import { appendFileSync, openSync, closeSync, mkdirSync } from 'fs';
|
|
5
|
-
import { homedir } from 'os';
|
|
6
2
|
|
|
7
3
|
|
|
8
4
|
|
|
@@ -64,61 +60,6 @@ const config = {
|
|
|
64
60
|
onAfterRender: async (_context, _outputPath) => {
|
|
65
61
|
// 输出由 init 命令统一处理
|
|
66
62
|
},
|
|
67
|
-
|
|
68
|
-
onComplete: async (_context, outputPath) => {
|
|
69
|
-
// Skip pnpm update in test environment to avoid monorepo workspace issues
|
|
70
|
-
if (process.env.NODE_ENV === 'test') {
|
|
71
|
-
console.log('⊘ Skipping dependency update in test environment');
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const cmd = 'pnpm';
|
|
76
|
-
const args = ['update', 'coze-coding-dev-sdk@^0.7.25'];
|
|
77
|
-
console.log(
|
|
78
|
-
`\nTriggering: ${cmd} ${args.join(' ')} (running in background)`,
|
|
79
|
-
);
|
|
80
|
-
|
|
81
|
-
try {
|
|
82
|
-
const projectRoot = resolve(outputPath);
|
|
83
|
-
|
|
84
|
-
// Determine log directory
|
|
85
|
-
const cozeHome = process.env.COZE_HOME || join(homedir(), '.coze');
|
|
86
|
-
const logDir = process.env.COZE_LOG_DIR || join(cozeHome, 'logs');
|
|
87
|
-
mkdirSync(logDir, { recursive: true });
|
|
88
|
-
|
|
89
|
-
// Use project name in log file to avoid conflicts
|
|
90
|
-
const projectName = basename(projectRoot);
|
|
91
|
-
const logFile = join(logDir, `${projectName}-init.log`);
|
|
92
|
-
|
|
93
|
-
// Write log header
|
|
94
|
-
const timestamp = new Date().toISOString();
|
|
95
|
-
appendFileSync(
|
|
96
|
-
logFile,
|
|
97
|
-
`\n=== [${timestamp}] ${cmd} ${args.join(' ')} ===\n`,
|
|
98
|
-
);
|
|
99
|
-
|
|
100
|
-
// Open log file for appending
|
|
101
|
-
const logFd = openSync(logFile, 'a');
|
|
102
|
-
|
|
103
|
-
// Spawn in detached mode
|
|
104
|
-
const child = spawn(cmd, args, {
|
|
105
|
-
cwd: projectRoot,
|
|
106
|
-
detached: true,
|
|
107
|
-
stdio: ['ignore', logFd, logFd],
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
child.unref();
|
|
111
|
-
closeSync(logFd);
|
|
112
|
-
|
|
113
|
-
console.log(
|
|
114
|
-
'✓ coze-coding-dev-sdk update triggered (running in background)',
|
|
115
|
-
);
|
|
116
|
-
console.log(` Log file: ${logFile}`);
|
|
117
|
-
} catch (error) {
|
|
118
|
-
console.error('✗ Failed to trigger coze-coding-dev-sdk update:', error);
|
|
119
|
-
console.log(' You can manually run: pnpm update coze-coding-dev-sdk');
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
63
|
};
|
|
123
64
|
|
|
124
65
|
export default config;
|
package/lib/cli.js
CHANGED
|
@@ -2114,7 +2114,7 @@ const EventBuilder = {
|
|
|
2114
2114
|
};
|
|
2115
2115
|
|
|
2116
2116
|
var name = "@coze-arch/cli";
|
|
2117
|
-
var version = "0.1.4-alpha.
|
|
2117
|
+
var version = "0.1.4-alpha.d384e3";
|
|
2118
2118
|
var description = "coze coding devtools cli";
|
|
2119
2119
|
var license = "MIT";
|
|
2120
2120
|
var author = "fanwenjie.fe@bytedance.com";
|
|
@@ -9179,6 +9179,7 @@ const shouldRenderFile = (filePath) => {
|
|
|
9179
9179
|
'.prettierrc',
|
|
9180
9180
|
'.babelrc',
|
|
9181
9181
|
'.sh',
|
|
9182
|
+
'.ps1',
|
|
9182
9183
|
]);
|
|
9183
9184
|
|
|
9184
9185
|
const ext = path.extname(filePath).toLowerCase();
|
|
@@ -9882,18 +9883,38 @@ const execute = async (
|
|
|
9882
9883
|
};
|
|
9883
9884
|
|
|
9884
9885
|
function _nullishCoalesce$2(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
9886
|
+
const getDependencyPreparationCommand = (projectPath) => {
|
|
9887
|
+
if (fs.existsSync(path.join(projectPath, 'scripts', 'prepare.sh'))) {
|
|
9888
|
+
return 'bash ./scripts/prepare.sh';
|
|
9889
|
+
}
|
|
9890
|
+
if (
|
|
9891
|
+
fs.existsSync(
|
|
9892
|
+
path.join(
|
|
9893
|
+
projectPath,
|
|
9894
|
+
'.cozeproj',
|
|
9895
|
+
'scripts',
|
|
9896
|
+
'prepare-node-modules.sh',
|
|
9897
|
+
),
|
|
9898
|
+
)
|
|
9899
|
+
) {
|
|
9900
|
+
return 'bash ./.cozeproj/scripts/prepare-node-modules.sh';
|
|
9901
|
+
}
|
|
9902
|
+
return 'pnpm install';
|
|
9903
|
+
};
|
|
9904
|
+
|
|
9885
9905
|
/**
|
|
9886
|
-
*
|
|
9906
|
+
* 优先通过模板提供的 wrapper 准备依赖。
|
|
9887
9907
|
*/
|
|
9888
|
-
const
|
|
9889
|
-
logger.info('\
|
|
9908
|
+
const prepareDependencies = (projectPath) => {
|
|
9909
|
+
logger.info('\nPreparing dependencies with the project wrapper...');
|
|
9890
9910
|
|
|
9891
|
-
const
|
|
9911
|
+
const command = getDependencyPreparationCommand(projectPath);
|
|
9912
|
+
const result = shelljs.exec(command, {
|
|
9892
9913
|
cwd: projectPath,
|
|
9893
9914
|
silent: true,
|
|
9894
9915
|
});
|
|
9895
9916
|
|
|
9896
|
-
// verbose
|
|
9917
|
+
// verbose 模式下输出依赖准备命令的详细日志
|
|
9897
9918
|
if (result.stdout) {
|
|
9898
9919
|
logger.verbose(result.stdout);
|
|
9899
9920
|
}
|
|
@@ -9902,11 +9923,11 @@ const runPnpmInstall = (projectPath) => {
|
|
|
9902
9923
|
}
|
|
9903
9924
|
|
|
9904
9925
|
if (result.code === 0) {
|
|
9905
|
-
logger.success('Dependencies
|
|
9926
|
+
logger.success('Dependencies prepared successfully!');
|
|
9906
9927
|
} else {
|
|
9907
9928
|
// 仅在失败时输出详细信息以便排查
|
|
9908
9929
|
const errorMessage = [
|
|
9909
|
-
|
|
9930
|
+
`${command} failed with exit code ${result.code}`,
|
|
9910
9931
|
result.stderr ? `\nStderr:\n${result.stderr}` : '',
|
|
9911
9932
|
result.stdout ? `\nStdout:\n${result.stdout}` : '',
|
|
9912
9933
|
]
|
|
@@ -10131,7 +10152,7 @@ const installDependenciesStep = ctx => {
|
|
|
10131
10152
|
try {
|
|
10132
10153
|
if (!skipInstall) {
|
|
10133
10154
|
if (ctx.hasPackageJson) {
|
|
10134
|
-
|
|
10155
|
+
prepareDependencies(ctx.absoluteOutputPath);
|
|
10135
10156
|
ctx.timer.logPhase('Dependencies installation');
|
|
10136
10157
|
} else {
|
|
10137
10158
|
logger.info(
|
|
@@ -10140,7 +10161,7 @@ const installDependenciesStep = ctx => {
|
|
|
10140
10161
|
}
|
|
10141
10162
|
}
|
|
10142
10163
|
} catch (error) {
|
|
10143
|
-
//
|
|
10164
|
+
// 捕获依赖准备失败的情况
|
|
10144
10165
|
installSuccess = false;
|
|
10145
10166
|
installErrorCode = 1;
|
|
10146
10167
|
installErrorType = 'execution_failed';
|
|
@@ -10227,7 +10248,9 @@ const startDevServerStep = ctx => {
|
|
|
10227
10248
|
logger.info('\nNext steps:');
|
|
10228
10249
|
logger.info(` cd ${ctx.outputPath}`);
|
|
10229
10250
|
if (skipInstall && ctx.hasPackageJson) {
|
|
10230
|
-
logger.info(
|
|
10251
|
+
logger.info(
|
|
10252
|
+
` ${getDependencyPreparationCommand(ctx.absoluteOutputPath)}`,
|
|
10253
|
+
);
|
|
10231
10254
|
}
|
|
10232
10255
|
if (skipGit) {
|
|
10233
10256
|
logger.info(' git init');
|
|
@@ -10339,7 +10362,7 @@ const registerCommand$1 = program => {
|
|
|
10339
10362
|
.argument('[directory]', 'Output directory for the project')
|
|
10340
10363
|
.requiredOption('-t, --template <name>', 'Template name')
|
|
10341
10364
|
.option('-o, --output <path>', 'Output directory', process.cwd())
|
|
10342
|
-
.option('--skip-install', 'Skip automatic
|
|
10365
|
+
.option('--skip-install', 'Skip automatic dependency preparation', false)
|
|
10343
10366
|
.option('--skip-git', 'Skip automatic git initialization', false)
|
|
10344
10367
|
.option(
|
|
10345
10368
|
'--skip-commit',
|
package/package.json
CHANGED