env-plugin 0.5.6

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 (49) hide show
  1. package/LICENSE +21 -0
  2. package/bin/index.js +23 -0
  3. package/dist/Container.js +55 -0
  4. package/dist/Plugin.js +25 -0
  5. package/dist/PostProxyServer.js +85 -0
  6. package/dist/client/assets/element-plus-wndYbaZY.js.gz +0 -0
  7. package/dist/client/assets/index-Bl3B2M1W.js.gz +0 -0
  8. package/dist/client/assets/index-nrcddKJg.css.gz +0 -0
  9. package/dist/client/assets/vue-BGFZjnqd.js.gz +0 -0
  10. package/dist/client/favicon.ico +0 -0
  11. package/dist/client/index.html +16 -0
  12. package/dist/constants/responseCode.js +27 -0
  13. package/dist/controllers/DevServerController.js +102 -0
  14. package/dist/controllers/EnvController.js +177 -0
  15. package/dist/controllers/PasswordController.js +106 -0
  16. package/dist/controllers/RouteRuleController.js +106 -0
  17. package/dist/dto/BaseRes.js +1 -0
  18. package/dist/dto/EnvDTO.js +4 -0
  19. package/dist/index.js +108 -0
  20. package/dist/middleware/dto.middleware.js +38 -0
  21. package/dist/middleware/globalErrorHandler.js +42 -0
  22. package/dist/middleware/responseEnhancer.js +52 -0
  23. package/dist/models/DevServerModel.js +1 -0
  24. package/dist/models/EnvModel.js +14 -0
  25. package/dist/repositories/DevServerRepo.js +101 -0
  26. package/dist/repositories/EnvRepo.js +121 -0
  27. package/dist/repositories/PasswordRepo.js +142 -0
  28. package/dist/repositories/RouteRuleRepo.js +106 -0
  29. package/dist/repositories/database.js +95 -0
  30. package/dist/routes/index.js +78 -0
  31. package/dist/service/DevServerService.js +189 -0
  32. package/dist/service/EnvService.js +214 -0
  33. package/dist/service/PasswordService.js +100 -0
  34. package/dist/service/PreProxyServer.js +344 -0
  35. package/dist/service/ProxyAutoStarterService.js +62 -0
  36. package/dist/service/RouteRuleService.js +131 -0
  37. package/dist/types/index.js +5 -0
  38. package/dist/types/shared/BaseRes.js +36 -0
  39. package/dist/types/shared/DevServerItem.js +51 -0
  40. package/dist/types/shared/EnvItem.js +57 -0
  41. package/dist/types/shared/EnvmConfig.js +17 -0
  42. package/dist/types/shared/ListRes.js +1 -0
  43. package/dist/types/shared/Password.js +48 -0
  44. package/dist/types/shared/RouteRule.js +49 -0
  45. package/dist/utils/ResolveConfig.js +79 -0
  46. package/dist/utils/errors.js +8 -0
  47. package/dist/utils/logger.js +93 -0
  48. package/package.json +78 -0
  49. package/readme.md +214 -0
package/package.json ADDED
@@ -0,0 +1,78 @@
1
+ {
2
+ "name": "env-plugin",
3
+ "version": "0.5.6",
4
+ "type": "module",
5
+ "description": "A dev env plugin that integrates an Express server with request proxying capabilities.",
6
+ "keywords": [
7
+ "proxy",
8
+ "devServer",
9
+ "Development environment management",
10
+ "webpack-plugin",
11
+ "rollup-plugin",
12
+ "vite-plugin"
13
+ ],
14
+ "bin": {
15
+ "envm": "bin/index.js"
16
+ },
17
+ "main": "./dist/Plugin.js",
18
+ "exports": {
19
+ ".": {
20
+ "import": "./dist/Plugin.js"
21
+ }
22
+ },
23
+ "author": "lcn",
24
+ "license": "MIT",
25
+ "dependencies": {
26
+ "commander": "^13.1.0",
27
+ "cookie": "^1.0.2",
28
+ "dotenv": "^17.1.0",
29
+ "express": "^4.21.2",
30
+ "express-static-gzip": "^2.2.0",
31
+ "http-proxy-middleware": "^3.0.3",
32
+ "lokijs": "^1.5.12",
33
+ "minimatch": "^10.2.4",
34
+ "pino": "^9.9.0",
35
+ "pino-pretty": "^13.1.1",
36
+ "portfinder": "^1.0.35",
37
+ "set-cookie-parser": "^2.7.1",
38
+ "tslib": "^2.8.1",
39
+ "unplugin": "^2.2.0",
40
+ "uuid": "^10.0.0",
41
+ "ws": "^8.18.3",
42
+ "zod": "^4.0.16"
43
+ },
44
+ "devDependencies": {
45
+ "@types/express": "^4.17.23",
46
+ "@types/lokijs": "^1.5.14",
47
+ "@types/set-cookie-parser": "^2.4.10",
48
+ "@types/uuid": "^10.0.0",
49
+ "@types/ws": "^8.18.0",
50
+ "globals": "^17.3.0",
51
+ "nodemon": "^3.1.9",
52
+ "tsx": "^4.20.3",
53
+ "typescript": "^5.8.2"
54
+ },
55
+ "bugs": {
56
+ "url": "https://github.com/lumos934/env-plugin/issues"
57
+ },
58
+ "homepage": "https://github.com/lumos934/env-plugin#readme",
59
+ "repository": {
60
+ "type": "git",
61
+ "url": "https://github.com/lumos934/env-plugin.git"
62
+ },
63
+ "engines": {
64
+ "node": ">=14.0.0"
65
+ },
66
+ "files": [
67
+ "bin/index.js",
68
+ "dist",
69
+ "templates",
70
+ "README.md",
71
+ "LICENSE"
72
+ ],
73
+ "scripts": {
74
+ "dev": "cross-env NODE_ENV=development tsx watch --tsconfig tsconfig.dev.json -- ./bin/index.ts",
75
+ "build": "tsc -p tsconfig.build.json",
76
+ "lint": "eslint ./src"
77
+ }
78
+ }
package/readme.md ADDED
@@ -0,0 +1,214 @@
1
+ [![npm][npm]][npm-url]
2
+ [![node][node]][node-url]
3
+ ![npm](https://img.shields.io/npm/dw/env-plugin.svg)
4
+
5
+ # EnvManage - 环境管理工具
6
+
7
+ `EnvManage` 是一款强大的环境管理工具,专为管理和代理多个开发环境而设计,特别适用于需要同时运行多个开发环境的场景。无论是小型项目还是大型企业级应用,`EnvManage` 都能极大地提升开发效率,简化环境管理流程。
8
+
9
+ ```mermaid
10
+ graph LR
11
+ A[前置转发服务1<br>端口 3000] --> B[开发服务器(webpack等)<br>端口 8080]
12
+ C[前置转发服务2<br>端口 3001] --> B
13
+ B --> D[后置转发服务<br>端口 3099]
14
+ D --> E[API 服务器1]
15
+ D --> F[API 服务器2]
16
+ ```
17
+
18
+ ## 🌟 功能特性
19
+
20
+ - **请求代理**
21
+
22
+ 通过前置和后置代理,确保请求准确无误地转发到指定的开发服务器。代理服务器会依据配置的目标服务器地址,将请求精准转发到对应的 API 服务器,保障数据交互顺畅。
23
+
24
+ - **多服务器管理**
25
+
26
+ 轻松实现同时启动和管理多个开发服务器,并通过管理页面查看代理服务运行状态,同时可灵活启动或停止某个环境对应的服务器。
27
+
28
+ ## 🚀 快速上手
29
+
30
+ ### 安装
31
+
32
+ ```bash
33
+ npm i -D env-plugin
34
+ ```
35
+
36
+ 或者全局安装
37
+
38
+ ```bash
39
+ npm i -g env-plugin
40
+ ```
41
+
42
+ ### 启动
43
+
44
+ 运行以下命令启动:
45
+
46
+ ```bash
47
+ npx envm
48
+ ```
49
+
50
+ 访问管理页面 [http://localhost:3099/](http://localhost:3099/) 对各个代理服务进行管理。
51
+
52
+ 1. 添加 `Dev Server`;
53
+ 2. 添加 `API Server`;
54
+ 3. 启动代理服务
55
+
56
+ ### 开发服务器配置
57
+
58
+ 调整开发服务器,将需要代理到 API 服务器的请求,转发到 后置代理服务器。
59
+
60
+ **webpack-dev-server**
61
+
62
+ ```js
63
+ // webpack.config.js
64
+
65
+ module.exports = {
66
+ devServer: {
67
+ proxy: {
68
+ "/api/test": "http://localhost:3099",
69
+ },
70
+ },
71
+ };
72
+ ```
73
+
74
+ **vite**
75
+
76
+ ```js
77
+ // vite.config.js
78
+ import { defineConfig } from "vite";
79
+
80
+ // https://vite.dev/config/
81
+ export default defineConfig({
82
+ server: {
83
+ proxy: {
84
+ "/api/test": {
85
+ target: "http://localhost:3099",
86
+ changeOrigin: true,
87
+ },
88
+ },
89
+ },
90
+ });
91
+ ```
92
+
93
+ ### 配置
94
+
95
+ #### 支持的配置项
96
+
97
+ | 配置项 | 类型 | 描述 | 默认值 |
98
+ | ------------ | ------ | ---------------------------------------------------------------- | --------------- |
99
+ | port | number | 服务启动端口 | 3099 |
100
+ | apiPrefix | string | 管理页面 API 接口前缀(如果与 API URL 冲突可调整,一般无需调整) | /dev-manage-api |
101
+ | cookieSuffix | string | Cookie 名称后缀 | envm |
102
+ | logLevel | string | 日志级别(debug/info/warn/error) | info |
103
+
104
+ #### 配置方式(按优先级从高到低)
105
+
106
+ 1. 动态传入参数
107
+
108
+ 在初始化时通过代码传入,优先级最高:
109
+
110
+ > 可以通过 npx envm -h 查看参数详情
111
+
112
+ ```cmd
113
+ npx envm -p 3000
114
+ ```
115
+
116
+ 2. 环境变量
117
+
118
+ 在 `.env` 文件中配置,优先级次之:
119
+
120
+ > 为了防止与其它应用配置冲突,增加了 envm\_ 前缀
121
+
122
+ ```env
123
+ // .env
124
+ # 示例:设置端口
125
+ envm_port=3000
126
+ envm_apiPrefix=/api
127
+ envm_cookieSuffix=envm
128
+ envm_logLevel=info
129
+ ```
130
+
131
+ 3. package.json 配置
132
+
133
+ 在项目 package.json 中添加 envm 字段,优先级最低:
134
+
135
+ ```json
136
+ {
137
+ "envm": {
138
+ "port": 5000
139
+ }
140
+ }
141
+ ```
142
+
143
+ ### 作为插件启动
144
+
145
+ `env-plugin` 使用 [Unplugin](https://unplugin.unjs.io) 为各种构建工具提供统一插件,作为插件启动。
146
+
147
+ #### webpack
148
+
149
+ ```js
150
+ // webpack.config.js
151
+ import { envmWebpackPlugin } from "env-plugin";
152
+
153
+ export default {
154
+ plugins: [
155
+ envmWebpackPlugin({
156
+ port: 3000,
157
+ }),
158
+ ],
159
+ // .... 其它配置
160
+ };
161
+ ```
162
+
163
+ #### vite
164
+
165
+ ```js
166
+ // vite.config.js
167
+ import { defineConfig } from "vite";
168
+ import { envmVitePlugin } from "env-plugin";
169
+
170
+ // https://vite.dev/config/
171
+ export default defineConfig({
172
+ plugins: [envmVitePlugin()],
173
+ // ... 其它配置
174
+ });
175
+ ```
176
+
177
+ > 支持工具 vite,rollup,rolldown,webpack,rspack,esbuild,farm
178
+
179
+ ### Cookie 代理
180
+
181
+ 由于 `Cookie` 在同主机的不同端口会进行共享,从而导致不同环境的登录失效,故支持 `Cookie` 代理功能。
182
+
183
+ 例如: 在 `localhost:3001` 端口登录 `环境A`,然后在 `localhost:3002` 登录 `环境B`;第二次登录的 `set-cookie` 操作,会覆盖 `环境A` 的登录操作设置的 `Cookie`。导致 `3001` 端口对 `环境A` 的登录失效。故设置此功能,将不同端口的登录 `Cookie` 分开存储,并在请求时替换成对应环境的 `Cookie`。
184
+
185
+ 其它:
186
+
187
+ 1. 通过管理页面的 `清除所有代理 Cookie` 按钮可以清除所有保存的代理`Cookie`。
188
+
189
+ 建议:
190
+
191
+ 1. 建议将生成的环境数据文件 .envm.data.json 加入 .gitignore,无需提交版本控制
192
+
193
+ ## 许可证
194
+
195
+ 本项目采用 MIT 许可证。详情请参阅 [LICENSE](LICENSE) 文件。
196
+
197
+ ## 贡献
198
+
199
+ 欢迎提交 Issue 和 Pull Request。请在提交之前阅读 [贡献指南](CONTRIBUTING.md)。
200
+
201
+ ## 作者
202
+
203
+ - [lumos934](https://github.com/lumos934)
204
+
205
+ ---
206
+
207
+ 感谢使用 `EnvManage`!如果你有任何问题或建议,请随时联系我们。
208
+
209
+ [npm]: https://img.shields.io/npm/v/env-plugin.svg?logo=npm
210
+ [npm-url]: https://npmjs.com/package/env-plugin
211
+ [node]: https://img.shields.io/node/v/env-plugin.svg?logo=node.js
212
+ [node-url]: https://nodejs.org
213
+
214
+ 这个怎么样?