digi-prettier 1.0.2 → 1.0.4
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/README.md +2 -24
- package/package.json +1 -1
- package/setup.js +3 -125
package/README.md
CHANGED
|
@@ -8,7 +8,6 @@ Digi 团队的共享 Prettier 配置包,提供统一的代码格式化规范
|
|
|
8
8
|
- 📝 完整的 EditorConfig 支持
|
|
9
9
|
- 🔧 Git Hooks 集成
|
|
10
10
|
- 🚀 一键设置脚本
|
|
11
|
-
- 💻 VSCode 完美集成
|
|
12
11
|
|
|
13
12
|
## 安装
|
|
14
13
|
|
|
@@ -95,7 +94,7 @@ npx digi-prettier
|
|
|
95
94
|
可选参数:
|
|
96
95
|
|
|
97
96
|
```bash
|
|
98
|
-
npx digi-prettier --no-install
|
|
97
|
+
npx digi-prettier --no-install
|
|
99
98
|
```
|
|
100
99
|
|
|
101
100
|
这会:
|
|
@@ -103,7 +102,6 @@ npx digi-prettier --no-install --no-vscode
|
|
|
103
102
|
- 检测 Node.js 版本
|
|
104
103
|
- 安装合适的 Prettier 版本
|
|
105
104
|
- 配置 package.json
|
|
106
|
-
- 设置 VSCode 配置
|
|
107
105
|
- 复制必要的配置文件
|
|
108
106
|
|
|
109
107
|
## 一键设置
|
|
@@ -118,7 +116,6 @@ npx digi-prettier
|
|
|
118
116
|
|
|
119
117
|
- 复制 `.prettierignore`、`.editorconfig`、`.lintstagedrc.json` 文件
|
|
120
118
|
- 更新 `package.json` 添加格式化脚本
|
|
121
|
-
- 创建 VSCode 设置文件
|
|
122
119
|
|
|
123
120
|
## 配置详情
|
|
124
121
|
|
|
@@ -133,7 +130,7 @@ npx digi-prettier
|
|
|
133
130
|
"singleQuote": true,
|
|
134
131
|
"quoteProps": "as-needed",
|
|
135
132
|
"jsxSingleQuote": true,
|
|
136
|
-
"trailingComma": "
|
|
133
|
+
"trailingComma": "es5",
|
|
137
134
|
"bracketSpacing": true,
|
|
138
135
|
"bracketSameLine": false,
|
|
139
136
|
"arrowParens": "avoid",
|
|
@@ -197,19 +194,6 @@ npx husky install
|
|
|
197
194
|
npx husky add .husky/pre-commit "npx lint-staged"
|
|
198
195
|
```
|
|
199
196
|
|
|
200
|
-
## VSCode 集成
|
|
201
|
-
|
|
202
|
-
自动设置脚本会创建 `.vscode/settings.json`,包含:
|
|
203
|
-
|
|
204
|
-
- 保存时自动格式化
|
|
205
|
-
- 设置 Prettier 为默认格式化工具
|
|
206
|
-
- 统一的编辑器设置
|
|
207
|
-
|
|
208
|
-
### 推荐的 VSCode 扩展
|
|
209
|
-
|
|
210
|
-
- [Prettier - Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)
|
|
211
|
-
- [EditorConfig for VS Code](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig)
|
|
212
|
-
|
|
213
197
|
## 项目结构
|
|
214
198
|
|
|
215
199
|
```
|
|
@@ -218,8 +202,6 @@ your-project/
|
|
|
218
202
|
├── .prettierignore # 忽略文件
|
|
219
203
|
├── .editorconfig # 编辑器配置
|
|
220
204
|
├── .lintstagedrc.json # Git hooks 配置
|
|
221
|
-
├── .vscode/
|
|
222
|
-
│ └── settings.json # VSCode 设置
|
|
223
205
|
└── package.json
|
|
224
206
|
```
|
|
225
207
|
|
|
@@ -234,10 +216,6 @@ your-project/
|
|
|
234
216
|
npm run format:check
|
|
235
217
|
```
|
|
236
218
|
|
|
237
|
-
2. 安装推荐的 VSCode 扩展
|
|
238
|
-
|
|
239
|
-
3. 确保编辑器设置正确
|
|
240
|
-
|
|
241
219
|
### 代码提交流程
|
|
242
220
|
|
|
243
221
|
1. 开发完成后运行格式化检查:
|
package/package.json
CHANGED
package/setup.js
CHANGED
|
@@ -6,7 +6,6 @@ const { execSync } = require('child_process');
|
|
|
6
6
|
|
|
7
7
|
const args = process.argv.slice(2);
|
|
8
8
|
const noInstall = args.includes('--no-install');
|
|
9
|
-
const noVscode = args.includes('--no-vscode');
|
|
10
9
|
|
|
11
10
|
console.log('🎨 设置 Prettier 配置...\n');
|
|
12
11
|
|
|
@@ -122,7 +121,9 @@ function updatePackageJson() {
|
|
|
122
121
|
// 添加配置包依赖
|
|
123
122
|
let configPackageVersion = '^1.0.0';
|
|
124
123
|
try {
|
|
125
|
-
const configPackageJson = JSON.parse(
|
|
124
|
+
const configPackageJson = JSON.parse(
|
|
125
|
+
fs.readFileSync(path.join(__dirname, 'package.json'), 'utf8')
|
|
126
|
+
);
|
|
126
127
|
if (configPackageJson && configPackageJson.version) {
|
|
127
128
|
configPackageVersion = `^${configPackageJson.version}`;
|
|
128
129
|
}
|
|
@@ -140,117 +141,6 @@ function updatePackageJson() {
|
|
|
140
141
|
console.log('✅ package.json 已更新');
|
|
141
142
|
}
|
|
142
143
|
|
|
143
|
-
// 创建或更新 VSCode 配置
|
|
144
|
-
function setupVSCodeSettings() {
|
|
145
|
-
const vscodeDir = path.join(projectRoot, '.vscode');
|
|
146
|
-
const settingsPath = path.join(vscodeDir, 'settings.json');
|
|
147
|
-
|
|
148
|
-
console.log('⚙️ 配置 VSCode 设置...');
|
|
149
|
-
|
|
150
|
-
// 确保 .vscode 目录存在
|
|
151
|
-
if (!fs.existsSync(vscodeDir)) {
|
|
152
|
-
fs.mkdirSync(vscodeDir, { recursive: true });
|
|
153
|
-
console.log('✅ 创建 .vscode 目录');
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
let settings = {};
|
|
157
|
-
|
|
158
|
-
if (fs.existsSync(settingsPath)) {
|
|
159
|
-
try {
|
|
160
|
-
settings = JSON.parse(fs.readFileSync(settingsPath, 'utf8'));
|
|
161
|
-
} catch (error) {
|
|
162
|
-
console.log('⚠️ 无法解析现有的 settings.json,将创建新的');
|
|
163
|
-
settings = {};
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// 添加增强的编辑器配置
|
|
168
|
-
const enhancedSettings = {
|
|
169
|
-
// 编辑器基础设置
|
|
170
|
-
'editor.cursorSmoothCaretAnimation': 'on',
|
|
171
|
-
'editor.defaultFormatter': 'esbenp.prettier-vscode',
|
|
172
|
-
'editor.formatOnSave': true,
|
|
173
|
-
'editor.formatOnPaste': true,
|
|
174
|
-
'editor.formatOnType': false,
|
|
175
|
-
'editor.tabSize': 2,
|
|
176
|
-
'editor.insertSpaces': true,
|
|
177
|
-
'editor.codeActionsOnSave': {
|
|
178
|
-
'source.fixAll': 'explicit',
|
|
179
|
-
},
|
|
180
|
-
|
|
181
|
-
// 文件设置
|
|
182
|
-
'files.eol': '\n',
|
|
183
|
-
'files.insertFinalNewline': true,
|
|
184
|
-
'files.trimTrailingWhitespace': true,
|
|
185
|
-
|
|
186
|
-
// 资源管理器文件嵌套
|
|
187
|
-
'explorer.fileNesting.enabled': true,
|
|
188
|
-
'explorer.fileNesting.patterns': {
|
|
189
|
-
'tsconfig.json': 'tsconfig.*.json, env.d.ts',
|
|
190
|
-
'vite.config.*': 'jsconfig*, vitest.config.*, cypress.config.*, playwright.config.*',
|
|
191
|
-
'package.json': 'package-lock.json, pnpm*, .yarnrc*, yarn*, .eslint*, eslint*, .prettier*, prettier*, .editorconfig',
|
|
192
|
-
},
|
|
193
|
-
|
|
194
|
-
// Prettier 设置
|
|
195
|
-
'prettier.requireConfig': true,
|
|
196
|
-
'prettier.useEditorConfig': true,
|
|
197
|
-
|
|
198
|
-
// 各种文件类型的格式化器配置
|
|
199
|
-
'[javascript]': {
|
|
200
|
-
'editor.defaultFormatter': 'esbenp.prettier-vscode',
|
|
201
|
-
},
|
|
202
|
-
'[typescript]': {
|
|
203
|
-
'editor.defaultFormatter': 'esbenp.prettier-vscode',
|
|
204
|
-
},
|
|
205
|
-
'[vue]': {
|
|
206
|
-
'editor.defaultFormatter': 'esbenp.prettier-vscode',
|
|
207
|
-
},
|
|
208
|
-
'[json]': {
|
|
209
|
-
'editor.defaultFormatter': 'esbenp.prettier-vscode',
|
|
210
|
-
},
|
|
211
|
-
'[jsonc]': {
|
|
212
|
-
'editor.defaultFormatter': 'esbenp.prettier-vscode',
|
|
213
|
-
},
|
|
214
|
-
'[html]': {
|
|
215
|
-
'editor.defaultFormatter': 'esbenp.prettier-vscode',
|
|
216
|
-
},
|
|
217
|
-
'[css]': {
|
|
218
|
-
'editor.defaultFormatter': 'esbenp.prettier-vscode',
|
|
219
|
-
},
|
|
220
|
-
'[scss]': {
|
|
221
|
-
'editor.defaultFormatter': 'esbenp.prettier-vscode',
|
|
222
|
-
},
|
|
223
|
-
'[less]': {
|
|
224
|
-
'editor.defaultFormatter': 'esbenp.prettier-vscode',
|
|
225
|
-
},
|
|
226
|
-
'[markdown]': {
|
|
227
|
-
'editor.defaultFormatter': 'esbenp.prettier-vscode',
|
|
228
|
-
},
|
|
229
|
-
'[yaml]': {
|
|
230
|
-
'editor.defaultFormatter': 'esbenp.prettier-vscode',
|
|
231
|
-
},
|
|
232
|
-
'[yml]': {
|
|
233
|
-
'editor.defaultFormatter': 'esbenp.prettier-vscode',
|
|
234
|
-
},
|
|
235
|
-
'[dotenv]': {
|
|
236
|
-
'editor.defaultFormatter': 'foxundermoon.shell-format',
|
|
237
|
-
},
|
|
238
|
-
'[properties]': {
|
|
239
|
-
'editor.defaultFormatter': 'foxundermoon.shell-format',
|
|
240
|
-
},
|
|
241
|
-
'[ignore]': {
|
|
242
|
-
'editor.defaultFormatter': 'foxundermoon.shell-format',
|
|
243
|
-
},
|
|
244
|
-
};
|
|
245
|
-
|
|
246
|
-
// 合并设置
|
|
247
|
-
Object.assign(settings, enhancedSettings);
|
|
248
|
-
|
|
249
|
-
// 写入设置文件
|
|
250
|
-
fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
|
|
251
|
-
console.log('✅ VSCode 设置已更新');
|
|
252
|
-
}
|
|
253
|
-
|
|
254
144
|
// 安装依赖
|
|
255
145
|
function installDependencies() {
|
|
256
146
|
console.log('📥 安装依赖...');
|
|
@@ -304,18 +194,12 @@ function showCompletionMessage() {
|
|
|
304
194
|
console.log(' ✅ .editorconfig');
|
|
305
195
|
console.log(' ✅ .lintstagedrc.json');
|
|
306
196
|
console.log(' ✅ package.json');
|
|
307
|
-
if (!noVscode) {
|
|
308
|
-
console.log(' ✅ .vscode/settings.json');
|
|
309
|
-
} else {
|
|
310
|
-
console.log(' ⏭️ .vscode/settings.json (已跳过)');
|
|
311
|
-
}
|
|
312
197
|
|
|
313
198
|
console.log('\n🚀 可用命令:');
|
|
314
199
|
console.log(' npm run format - 格式化所有文件');
|
|
315
200
|
console.log(' npm run format:check - 检查格式化状态');
|
|
316
201
|
|
|
317
202
|
console.log('\n💡 提示:');
|
|
318
|
-
console.log(' - 安装 VSCode 的 Prettier 扩展以获得最佳体验');
|
|
319
203
|
console.log(' - 如需提交前自动检查/格式化,可结合 husky + lint-staged');
|
|
320
204
|
if (noInstall) {
|
|
321
205
|
console.log(' - 你选择跳过依赖安装,请自行运行 pnpm install / npm install / yarn install');
|
|
@@ -341,11 +225,6 @@ async function main() {
|
|
|
341
225
|
updatePackageJson();
|
|
342
226
|
console.log('');
|
|
343
227
|
|
|
344
|
-
if (!noVscode) {
|
|
345
|
-
setupVSCodeSettings();
|
|
346
|
-
console.log('');
|
|
347
|
-
}
|
|
348
|
-
|
|
349
228
|
if (!noInstall) {
|
|
350
229
|
installDependencies();
|
|
351
230
|
console.log('');
|
|
@@ -366,7 +245,6 @@ if (require.main === module) {
|
|
|
366
245
|
module.exports = {
|
|
367
246
|
copyConfigFiles,
|
|
368
247
|
updatePackageJson,
|
|
369
|
-
setupVSCodeSettings,
|
|
370
248
|
installDependencies,
|
|
371
249
|
getNodeVersion,
|
|
372
250
|
getRecommendedPrettierVersion,
|