@gylautorun/dev-proxy-cookie 1.0.0 → 1.0.2
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 +214 -2
- package/dist/index.d.mts +347 -31
- package/dist/index.d.ts +347 -31
- package/dist/index.js +411 -145
- package/dist/index.min.js +4 -4
- package/dist/index.min.mjs +4 -4
- package/dist/index.mjs +407 -140
- package/package.json +1 -1
- package/src/index.ts +13 -0
- package/src/proxy/apply-dev-cookie-header.ts +35 -5
- package/src/proxy/core.ts +214 -15
- package/src/proxy/index.ts +8 -3
- package/src/proxy/vite-middleware-plugin.ts +158 -0
- package/src/proxy/vue-proxy-config.ts +112 -9
- package/src/utils/cookie-reader.ts +74 -3
- package/src/utils/cookie-watcher.ts +50 -1
- package/src/utils/env-detector.ts +162 -0
- package/src/utils/index.ts +9 -1
- package/src/proxy/vite-adapter.ts +0 -77
- package/src/proxy/vite-cookie-plugin.ts +0 -60
- package/src/proxy/vite-plugin.ts +0 -55
package/README.md
CHANGED
|
@@ -239,11 +239,32 @@ export default defineConfig({
|
|
|
239
239
|
|
|
240
240
|
```javascript
|
|
241
241
|
const getCookie = createFileCookieGetter('./cookie.txt', {
|
|
242
|
-
watch: true, // 是否监听文件变化,默认
|
|
242
|
+
watch: true, // 是否监听文件变化,默认 'auto'
|
|
243
243
|
debug: true, // 是否输出调试日志,默认 false
|
|
244
|
+
isDev: process.env.NODE_ENV === 'development', // 是否为开发环境(优先级最高)
|
|
244
245
|
});
|
|
245
246
|
```
|
|
246
247
|
|
|
248
|
+
**选项:**
|
|
249
|
+
|
|
250
|
+
- `cookieFile` (string): Cookie 文件路径(必需)
|
|
251
|
+
- `watch` (boolean | 'auto'): 是否监听文件变化,默认 `'auto'`
|
|
252
|
+
- `true`: 始终监听
|
|
253
|
+
- `false`: 从不监听
|
|
254
|
+
- `'auto'`: 根据环境自动判断(默认)
|
|
255
|
+
- `debug` (boolean): 是否输出调试日志,默认 `false`
|
|
256
|
+
- `productionEnvs` (string[]): 自定义生产环境变量列表,用于判断是否禁用监听
|
|
257
|
+
- `isDev` (boolean): 是否为开发环境(优先级最高)
|
|
258
|
+
- 设置此参数后,将直接决定是否启用文件监听
|
|
259
|
+
- `true`: 启用监听(开发模式)
|
|
260
|
+
- `false`: 禁用监听(生产模式)
|
|
261
|
+
|
|
262
|
+
**参数优先级:**
|
|
263
|
+
|
|
264
|
+
```
|
|
265
|
+
isDev (最高) → watch (中等) → 智能检测 (最低)
|
|
266
|
+
```
|
|
267
|
+
|
|
247
268
|
### Vite 相关
|
|
248
269
|
|
|
249
270
|
#### viteAutoProxyCookie(options)
|
|
@@ -265,6 +286,10 @@ Vite 插件,自动配置代理和 Cookie 注入。
|
|
|
265
286
|
- `includePaths` (string[]): 只代理这些路径
|
|
266
287
|
- `ignorePaths` (array): 忽略的路径
|
|
267
288
|
- `hooks` (object): 钩子函数配置
|
|
289
|
+
- `isDev` (boolean): 是否为开发环境(优先级最高)
|
|
290
|
+
- 设置此参数后,将直接决定是否启用文件监听
|
|
291
|
+
- `true`: 启用监听(开发模式)
|
|
292
|
+
- `false`: 禁用监听(生产模式)
|
|
268
293
|
|
|
269
294
|
#### viteDevProxyCookie(options)
|
|
270
295
|
|
|
@@ -275,6 +300,14 @@ Vite 插件,基础 Cookie 注入功能。
|
|
|
275
300
|
- `cookieFile` (string): Cookie 文件路径(必需)
|
|
276
301
|
- `debug` (boolean): 是否开启调试日志,默认 `false`
|
|
277
302
|
- `onCookieChange` ((cookie: string) => void): Cookie 变化回调
|
|
303
|
+
- `watch` (boolean | 'auto'): 是否监听文件变化,默认 `'auto'`
|
|
304
|
+
- `true`: 始终监听
|
|
305
|
+
- `false`: 从不监听
|
|
306
|
+
- `'auto'`: 根据环境自动判断(默认)
|
|
307
|
+
- `isDev` (boolean): 是否为开发环境(优先级最高)
|
|
308
|
+
- 设置此参数后,将直接决定是否启用文件监听
|
|
309
|
+
- `true`: 启用监听(开发模式)
|
|
310
|
+
- `false`: 禁用监听(生产模式)
|
|
278
311
|
|
|
279
312
|
### 工具类
|
|
280
313
|
|
|
@@ -458,6 +491,8 @@ src/
|
|
|
458
491
|
|
|
459
492
|
## 最佳实践
|
|
460
493
|
|
|
494
|
+
### 推荐配置
|
|
495
|
+
|
|
461
496
|
```javascript
|
|
462
497
|
// cookie.txt - 存放登录后的 Cookie
|
|
463
498
|
session-id=abc123
|
|
@@ -475,7 +510,10 @@ module.exports = {
|
|
|
475
510
|
devServer: {
|
|
476
511
|
proxy: createAutoProxyConfig({
|
|
477
512
|
target: 'http://localhost:3000',
|
|
478
|
-
getCookie: createFileCookieGetter('./cookie.txt', {
|
|
513
|
+
getCookie: createFileCookieGetter('./cookie.txt', {
|
|
514
|
+
watch: 'auto', // 自动判断环境
|
|
515
|
+
debug: true,
|
|
516
|
+
}),
|
|
479
517
|
ignorePaths: ['/assets/', '/public/'],
|
|
480
518
|
}),
|
|
481
519
|
},
|
|
@@ -489,12 +527,51 @@ export default defineConfig({
|
|
|
489
527
|
viteAutoProxyCookie({
|
|
490
528
|
cookieFile: './cookie.txt',
|
|
491
529
|
target: 'http://localhost:3000',
|
|
530
|
+
isDev: process.env.NODE_ENV === 'development', // 显式指定环境
|
|
492
531
|
ignorePaths: ['/assets/', '/public/'],
|
|
493
532
|
}),
|
|
494
533
|
],
|
|
495
534
|
});
|
|
496
535
|
```
|
|
497
536
|
|
|
537
|
+
### 环境配置建议
|
|
538
|
+
|
|
539
|
+
**开发环境(推荐使用 `isDev`)**
|
|
540
|
+
|
|
541
|
+
```javascript
|
|
542
|
+
const getCookie = createFileCookieGetter('./cookie.txt', {
|
|
543
|
+
isDev: process.env.NODE_ENV === 'development',
|
|
544
|
+
debug: true,
|
|
545
|
+
});
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
**预发布环境(需要调试)**
|
|
549
|
+
|
|
550
|
+
```javascript
|
|
551
|
+
const getCookie = createFileCookieGetter('./cookie.txt', {
|
|
552
|
+
isDev: true, // 强制启用监听
|
|
553
|
+
debug: true,
|
|
554
|
+
});
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
**生产环境(禁用监听)**
|
|
558
|
+
|
|
559
|
+
```javascript
|
|
560
|
+
const getCookie = createFileCookieGetter('./cookie.txt', {
|
|
561
|
+
isDev: false, // 强制禁用监听
|
|
562
|
+
debug: false,
|
|
563
|
+
});
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
**自动检测(默认行为)**
|
|
567
|
+
|
|
568
|
+
```javascript
|
|
569
|
+
const getCookie = createFileCookieGetter('./cookie.txt', {
|
|
570
|
+
watch: 'auto', // 默认值,自动判断环境
|
|
571
|
+
debug: true,
|
|
572
|
+
});
|
|
573
|
+
```
|
|
574
|
+
|
|
498
575
|
## 常见问题
|
|
499
576
|
|
|
500
577
|
### Q: Cookie 文件修改后没有生效?
|
|
@@ -522,10 +599,145 @@ A: Cookie 值会被自动处理,支持包含 `/`、`+`、`=` 等特殊字符
|
|
|
522
599
|
|
|
523
600
|
A: 启用 `debug: true` 选项,控制台会输出详细的代理日志。也可以在 `hooks.onProxyReq` 中添加自定义日志。
|
|
524
601
|
|
|
602
|
+
### Q: 构建完成后进程不退出,一直挂起?
|
|
603
|
+
|
|
604
|
+
A: 这是由于文件监听器在生产环境下仍然运行导致的。解决方案:
|
|
605
|
+
|
|
606
|
+
**方案一:使用 `isDev` 参数(推荐)**
|
|
607
|
+
|
|
608
|
+
```javascript
|
|
609
|
+
// Vue CLI 项目
|
|
610
|
+
const getCookie = createFileCookieGetter('./cookie.txt', {
|
|
611
|
+
isDev: process.env.NODE_ENV === 'development',
|
|
612
|
+
debug: true,
|
|
613
|
+
});
|
|
614
|
+
|
|
615
|
+
// Vite 项目
|
|
616
|
+
export default defineConfig({
|
|
617
|
+
plugins: [
|
|
618
|
+
viteDevProxyCookie({
|
|
619
|
+
cookieFile: './cookie.txt',
|
|
620
|
+
isDev: process.env.NODE_ENV === 'development',
|
|
621
|
+
}),
|
|
622
|
+
],
|
|
623
|
+
});
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
**方案二:设置 `watch: false`**
|
|
627
|
+
|
|
628
|
+
```javascript
|
|
629
|
+
const getCookie = createFileCookieGetter('./cookie.txt', {
|
|
630
|
+
watch: false, // 禁用文件监听
|
|
631
|
+
});
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
**方案三:使用智能检测(默认行为)**
|
|
635
|
+
|
|
636
|
+
```javascript
|
|
637
|
+
const getCookie = createFileCookieGetter('./cookie.txt', {
|
|
638
|
+
watch: 'auto', // 默认值,自动判断环境
|
|
639
|
+
});
|
|
640
|
+
```
|
|
641
|
+
|
|
642
|
+
智能检测会检查以下环境变量:
|
|
643
|
+
|
|
644
|
+
- `NODE_ENV`、`BUILD_MODE`、`VUE_APP_ENV`、`VITE_NODE_ENV` 等
|
|
645
|
+
- CI/CD 环境标识(`CI`)
|
|
646
|
+
- npm 生命周期事件(如 `build`)
|
|
647
|
+
- 进程参数(如 `--mode=production`)
|
|
648
|
+
|
|
649
|
+
### Q: 如何在预发布环境(staging/uat)启用文件监听?
|
|
650
|
+
|
|
651
|
+
A: 预发布环境通常需要调试,建议显式设置 `isDev: true`:
|
|
652
|
+
|
|
653
|
+
```javascript
|
|
654
|
+
const getCookie = createFileCookieGetter('./cookie.txt', {
|
|
655
|
+
isDev: true, // 强制启用监听
|
|
656
|
+
debug: true,
|
|
657
|
+
});
|
|
658
|
+
```
|
|
659
|
+
|
|
660
|
+
或者使用 `watch: true`:
|
|
661
|
+
|
|
662
|
+
```javascript
|
|
663
|
+
const getCookie = createFileCookieGetter('./cookie.txt', {
|
|
664
|
+
watch: true, // 始终监听
|
|
665
|
+
debug: true,
|
|
666
|
+
});
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
### Q: `isDev`、`watch` 和智能检测的优先级是什么?
|
|
670
|
+
|
|
671
|
+
A: 优先级从高到低:
|
|
672
|
+
|
|
673
|
+
```
|
|
674
|
+
isDev (最高) → watch (中等) → 智能检测 (最低)
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
- 如果设置了 `isDev`,直接使用该值
|
|
678
|
+
- 如果 `isDev` 未设置但 `watch` 为 `true` 或 `false`,使用 `watch` 值
|
|
679
|
+
- 如果都未设置或 `watch` 为 `'auto'`,使用智能检测
|
|
680
|
+
|
|
681
|
+
### Q: 如何自定义生产环境检测?
|
|
682
|
+
|
|
683
|
+
A: 使用 `productionEnvs` 参数:
|
|
684
|
+
|
|
685
|
+
```javascript
|
|
686
|
+
const getCookie = createFileCookieGetter('./cookie.txt', {
|
|
687
|
+
productionEnvs: ['MY_APP_ENV', 'BUILD_TYPE'], // 自定义环境变量
|
|
688
|
+
debug: true,
|
|
689
|
+
});
|
|
690
|
+
```
|
|
691
|
+
|
|
692
|
+
### Q: ESLint 报错 `import/no-extraneous-dependencies`?
|
|
693
|
+
|
|
694
|
+
A: 确保在 `.eslintrc.js` 中正确配置:
|
|
695
|
+
|
|
696
|
+
```javascript
|
|
697
|
+
module.exports = {
|
|
698
|
+
// ...
|
|
699
|
+
rules: {
|
|
700
|
+
'import/no-extraneous-dependencies': ['error', {
|
|
701
|
+
devDependencies: true,
|
|
702
|
+
optionalDependencies: false,
|
|
703
|
+
}],
|
|
704
|
+
},
|
|
705
|
+
};
|
|
706
|
+
```
|
|
707
|
+
|
|
708
|
+
### Q: 如何查看当前环境检测的详细信息?
|
|
709
|
+
|
|
710
|
+
A: 启用 `debug: true` 选项:
|
|
711
|
+
|
|
712
|
+
```javascript
|
|
713
|
+
const getCookie = createFileCookieGetter('./cookie.txt', {
|
|
714
|
+
watch: 'auto',
|
|
715
|
+
debug: true, // 输出环境检测日志
|
|
716
|
+
});
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
控制台会输出类似信息:
|
|
720
|
+
|
|
721
|
+
```
|
|
722
|
+
[env-detector] Auto-detected production mode - disabling watch
|
|
723
|
+
```
|
|
724
|
+
|
|
725
|
+
或
|
|
726
|
+
|
|
727
|
+
```
|
|
728
|
+
[env-detector] Auto-detected development mode - enabling watch
|
|
729
|
+
```
|
|
730
|
+
|
|
525
731
|
## 发布流程
|
|
526
732
|
|
|
527
733
|
完整的发布流程文档请查看:[docs/release.md](docs/release.md)
|
|
528
734
|
|
|
735
|
+
## 问题排查
|
|
736
|
+
|
|
737
|
+
### 构建进程不退出问题
|
|
738
|
+
|
|
739
|
+
如果遇到构建完成后进程不退出的问题,请查看详细解决方案:[docs/build-hang-issue.md](docs/build-hang-issue.md)
|
|
740
|
+
|
|
529
741
|
## License
|
|
530
742
|
|
|
531
743
|
MIT License
|