@fecommunity/reactpress 3.0.3 → 3.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/bin/reactpress.js +127 -20
- package/dist/index.js +0 -0
- package/lib/build.js +25 -9
- package/lib/db-backup.js +21 -0
- package/lib/dev-banner.js +42 -10
- package/lib/dev.js +48 -29
- package/lib/docker.js +162 -44
- package/lib/doctor.js +71 -15
- package/lib/http.js +39 -4
- package/lib/i18n/strings.js +297 -40
- package/lib/lifecycle.js +43 -2
- package/lib/nginx.js +342 -0
- package/lib/project-type.js +72 -0
- package/lib/publish.js +46 -30
- package/lib/status.js +69 -45
- package/package.json +5 -6
- package/server/dist/dist/app.module.d.ts +2 -0
- package/server/dist/dist/app.module.js +105 -0
- package/server/dist/dist/app.module.js.map +1 -0
- package/server/dist/dist/common/api-messages.d.ts +32 -0
- package/server/dist/dist/common/api-messages.js +36 -0
- package/server/dist/dist/common/api-messages.js.map +1 -0
- package/server/dist/dist/filters/http-exception.filter.d.ts +4 -0
- package/server/dist/dist/filters/http-exception.filter.js +36 -0
- package/server/dist/dist/filters/http-exception.filter.js.map +1 -0
- package/server/dist/dist/generate-swagger.d.ts +1 -0
- package/server/dist/dist/generate-swagger.js +73 -0
- package/server/dist/dist/generate-swagger.js.map +1 -0
- package/server/dist/dist/interceptors/transform.interceptor.d.ts +9 -0
- package/server/dist/dist/interceptors/transform.interceptor.js +36 -0
- package/server/dist/dist/interceptors/transform.interceptor.js.map +1 -0
- package/server/dist/dist/logger/index.d.ts +4 -0
- package/server/dist/dist/logger/index.js +33 -0
- package/server/dist/dist/logger/index.js.map +1 -0
- package/server/dist/dist/main.d.ts +6 -0
- package/server/dist/dist/main.js +263 -0
- package/server/dist/dist/main.js.map +1 -0
- package/server/dist/dist/modules/api-key/api-key.controller.d.ts +14 -0
- package/server/dist/dist/modules/api-key/api-key.controller.js +63 -0
- package/server/dist/dist/modules/api-key/api-key.controller.js.map +1 -0
- package/server/dist/dist/modules/api-key/api-key.entity.d.ts +11 -0
- package/server/dist/dist/modules/api-key/api-key.entity.js +63 -0
- package/server/dist/dist/modules/api-key/api-key.entity.js.map +1 -0
- package/server/dist/dist/modules/api-key/api-key.guard.d.ts +7 -0
- package/server/dist/dist/modules/api-key/api-key.guard.js +40 -0
- package/server/dist/dist/modules/api-key/api-key.guard.js.map +1 -0
- package/server/dist/dist/modules/api-key/api-key.module.d.ts +2 -0
- package/server/dist/dist/modules/api-key/api-key.module.js +28 -0
- package/server/dist/dist/modules/api-key/api-key.module.js.map +1 -0
- package/server/dist/dist/modules/api-key/api-key.service.d.ts +15 -0
- package/server/dist/dist/modules/api-key/api-key.service.js +81 -0
- package/server/dist/dist/modules/api-key/api-key.service.js.map +1 -0
- package/server/dist/dist/modules/article/article-revision.entity.d.ts +11 -0
- package/server/dist/dist/modules/article/article-revision.entity.js +53 -0
- package/server/dist/dist/modules/article/article-revision.entity.js.map +1 -0
- package/server/dist/dist/modules/article/article.controller.d.ts +32 -0
- package/server/dist/dist/modules/article/article.controller.js +242 -0
- package/server/dist/dist/modules/article/article.controller.js.map +1 -0
- package/server/dist/dist/modules/article/article.entity.d.ts +24 -0
- package/server/dist/dist/modules/article/article.entity.js +133 -0
- package/server/dist/dist/modules/article/article.entity.js.map +1 -0
- package/server/dist/dist/modules/article/article.module.d.ts +2 -0
- package/server/dist/dist/modules/article/article.module.js +42 -0
- package/server/dist/dist/modules/article/article.module.js.map +1 -0
- package/server/dist/dist/modules/article/article.service.d.ts +38 -0
- package/server/dist/dist/modules/article/article.service.js +357 -0
- package/server/dist/dist/modules/article/article.service.js.map +1 -0
- package/server/dist/dist/modules/article/article.util.d.ts +1 -0
- package/server/dist/dist/modules/article/article.util.js +9 -0
- package/server/dist/dist/modules/article/article.util.js.map +1 -0
- package/server/dist/dist/modules/article/scheduled-publish.service.d.ts +13 -0
- package/server/dist/dist/modules/article/scheduled-publish.service.js +65 -0
- package/server/dist/dist/modules/article/scheduled-publish.service.js.map +1 -0
- package/server/dist/dist/modules/auth/auth.controller.d.ts +12 -0
- package/server/dist/dist/modules/auth/auth.controller.js +66 -0
- package/server/dist/dist/modules/auth/auth.controller.js.map +1 -0
- package/server/dist/dist/modules/auth/auth.module.d.ts +2 -0
- package/server/dist/dist/modules/auth/auth.module.js +41 -0
- package/server/dist/dist/modules/auth/auth.module.js.map +1 -0
- package/server/dist/dist/modules/auth/auth.service.d.ts +26 -0
- package/server/dist/dist/modules/auth/auth.service.js +128 -0
- package/server/dist/dist/modules/auth/auth.service.js.map +1 -0
- package/server/dist/dist/modules/auth/jwt-auth.guard.d.ts +7 -0
- package/server/dist/dist/modules/auth/jwt-auth.guard.js +30 -0
- package/server/dist/dist/modules/auth/jwt-auth.guard.js.map +1 -0
- package/server/dist/dist/modules/auth/jwt.strategy.d.ts +9 -0
- package/server/dist/dist/modules/auth/jwt.strategy.js +39 -0
- package/server/dist/dist/modules/auth/jwt.strategy.js.map +1 -0
- package/server/dist/dist/modules/auth/roles.guard.d.ts +10 -0
- package/server/dist/dist/modules/auth/roles.guard.js +46 -0
- package/server/dist/dist/modules/auth/roles.guard.js.map +1 -0
- package/server/dist/dist/modules/category/category.controller.d.ts +11 -0
- package/server/dist/dist/modules/category/category.controller.js +91 -0
- package/server/dist/dist/modules/category/category.controller.js.map +1 -0
- package/server/dist/dist/modules/category/category.entity.d.ts +9 -0
- package/server/dist/dist/modules/category/category.entity.js +60 -0
- package/server/dist/dist/modules/category/category.entity.js.map +1 -0
- package/server/dist/dist/modules/category/category.module.d.ts +2 -0
- package/server/dist/dist/modules/category/category.module.js +27 -0
- package/server/dist/dist/modules/category/category.module.js.map +1 -0
- package/server/dist/dist/modules/category/category.service.d.ts +12 -0
- package/server/dist/dist/modules/category/category.service.js +90 -0
- package/server/dist/dist/modules/category/category.service.js.map +1 -0
- package/server/dist/dist/modules/comment/comment.controller.d.ts +12 -0
- package/server/dist/dist/modules/comment/comment.controller.js +100 -0
- package/server/dist/dist/modules/comment/comment.controller.js.map +1 -0
- package/server/dist/dist/modules/comment/comment.entity.d.ts +17 -0
- package/server/dist/dist/modules/comment/comment.entity.js +104 -0
- package/server/dist/dist/modules/comment/comment.entity.js.map +1 -0
- package/server/dist/dist/modules/comment/comment.module.d.ts +2 -0
- package/server/dist/dist/modules/comment/comment.module.js +39 -0
- package/server/dist/dist/modules/comment/comment.module.js.map +1 -0
- package/server/dist/dist/modules/comment/comment.service.d.ts +26 -0
- package/server/dist/dist/modules/comment/comment.service.js +182 -0
- package/server/dist/dist/modules/comment/comment.service.js.map +1 -0
- package/server/dist/dist/modules/comment/html.d.ts +15 -0
- package/server/dist/dist/modules/comment/html.js +632 -0
- package/server/dist/dist/modules/comment/html.js.map +1 -0
- package/server/dist/dist/modules/file/file.controller.d.ts +10 -0
- package/server/dist/dist/modules/file/file.controller.js +84 -0
- package/server/dist/dist/modules/file/file.controller.js.map +1 -0
- package/server/dist/dist/modules/file/file.entity.d.ts +9 -0
- package/server/dist/dist/modules/file/file.entity.js +60 -0
- package/server/dist/dist/modules/file/file.entity.js.map +1 -0
- package/server/dist/dist/modules/file/file.module.d.ts +2 -0
- package/server/dist/dist/modules/file/file.module.js +27 -0
- package/server/dist/dist/modules/file/file.module.js.map +1 -0
- package/server/dist/dist/modules/file/file.service.d.ts +17 -0
- package/server/dist/dist/modules/file/file.service.js +111 -0
- package/server/dist/dist/modules/file/file.service.js.map +1 -0
- package/server/dist/dist/modules/health/health.controller.d.ts +11 -0
- package/server/dist/dist/modules/health/health.controller.js +57 -0
- package/server/dist/dist/modules/health/health.controller.js.map +1 -0
- package/server/dist/dist/modules/health/health.module.d.ts +2 -0
- package/server/dist/dist/modules/health/health.module.js +20 -0
- package/server/dist/dist/modules/health/health.module.js.map +1 -0
- package/server/dist/dist/modules/install/install.controller.d.ts +11 -0
- package/server/dist/dist/modules/install/install.controller.js +49 -0
- package/server/dist/dist/modules/install/install.controller.js.map +1 -0
- package/server/dist/dist/modules/install/install.module.d.ts +2 -0
- package/server/dist/dist/modules/install/install.module.js +26 -0
- package/server/dist/dist/modules/install/install.module.js.map +1 -0
- package/server/dist/dist/modules/install/install.service.d.ts +12 -0
- package/server/dist/dist/modules/install/install.service.js +63 -0
- package/server/dist/dist/modules/install/install.service.js.map +1 -0
- package/server/dist/dist/modules/knowledge/knowledge.controller.d.ts +14 -0
- package/server/dist/dist/modules/knowledge/knowledge.controller.js +128 -0
- package/server/dist/dist/modules/knowledge/knowledge.controller.js.map +1 -0
- package/server/dist/dist/modules/knowledge/knowledge.entity.d.ts +18 -0
- package/server/dist/dist/modules/knowledge/knowledge.entity.js +109 -0
- package/server/dist/dist/modules/knowledge/knowledge.entity.js.map +1 -0
- package/server/dist/dist/modules/knowledge/knowledge.module.d.ts +2 -0
- package/server/dist/dist/modules/knowledge/knowledge.module.js +27 -0
- package/server/dist/dist/modules/knowledge/knowledge.module.js.map +1 -0
- package/server/dist/dist/modules/knowledge/knowledge.service.d.ts +14 -0
- package/server/dist/dist/modules/knowledge/knowledge.service.js +144 -0
- package/server/dist/dist/modules/knowledge/knowledge.service.js.map +1 -0
- package/server/dist/dist/modules/page/page.controller.d.ts +12 -0
- package/server/dist/dist/modules/page/page.controller.js +102 -0
- package/server/dist/dist/modules/page/page.controller.js.map +1 -0
- package/server/dist/dist/modules/page/page.entity.d.ts +15 -0
- package/server/dist/dist/modules/page/page.entity.js +94 -0
- package/server/dist/dist/modules/page/page.entity.js.map +1 -0
- package/server/dist/dist/modules/page/page.module.d.ts +2 -0
- package/server/dist/dist/modules/page/page.module.js +27 -0
- package/server/dist/dist/modules/page/page.module.js.map +1 -0
- package/server/dist/dist/modules/page/page.service.d.ts +12 -0
- package/server/dist/dist/modules/page/page.service.js +98 -0
- package/server/dist/dist/modules/page/page.service.js.map +1 -0
- package/server/dist/dist/modules/search/search.controller.d.ts +8 -0
- package/server/dist/dist/modules/search/search.controller.js +67 -0
- package/server/dist/dist/modules/search/search.controller.js.map +1 -0
- package/server/dist/dist/modules/search/search.entity.d.ts +8 -0
- package/server/dist/dist/modules/search/search.entity.js +59 -0
- package/server/dist/dist/modules/search/search.entity.js.map +1 -0
- package/server/dist/dist/modules/search/search.module.d.ts +2 -0
- package/server/dist/dist/modules/search/search.module.js +27 -0
- package/server/dist/dist/modules/search/search.module.js.map +1 -0
- package/server/dist/dist/modules/search/search.service.d.ts +12 -0
- package/server/dist/dist/modules/search/search.service.js +84 -0
- package/server/dist/dist/modules/search/search.service.js.map +1 -0
- package/server/dist/dist/modules/setting/setting.constant.d.ts +3 -0
- package/server/dist/dist/modules/setting/setting.constant.js +25 -0
- package/server/dist/dist/modules/setting/setting.constant.js.map +1 -0
- package/server/dist/dist/modules/setting/setting.controller.d.ts +12 -0
- package/server/dist/dist/modules/setting/setting.controller.js +77 -0
- package/server/dist/dist/modules/setting/setting.controller.js.map +1 -0
- package/server/dist/dist/modules/setting/setting.entity.d.ts +26 -0
- package/server/dist/dist/modules/setting/setting.entity.js +149 -0
- package/server/dist/dist/modules/setting/setting.entity.js.map +1 -0
- package/server/dist/dist/modules/setting/setting.module.d.ts +2 -0
- package/server/dist/dist/modules/setting/setting.module.js +28 -0
- package/server/dist/dist/modules/setting/setting.module.js.map +1 -0
- package/server/dist/dist/modules/setting/setting.service.d.ts +10 -0
- package/server/dist/dist/modules/setting/setting.service.js +106 -0
- package/server/dist/dist/modules/setting/setting.service.js.map +1 -0
- package/server/dist/dist/modules/smtp/mail.util.d.ts +6 -0
- package/server/dist/dist/modules/smtp/mail.util.js +33 -0
- package/server/dist/dist/modules/smtp/mail.util.js.map +1 -0
- package/server/dist/dist/modules/smtp/smtp.controller.d.ts +9 -0
- package/server/dist/dist/modules/smtp/smtp.controller.js +69 -0
- package/server/dist/dist/modules/smtp/smtp.controller.js.map +1 -0
- package/server/dist/dist/modules/smtp/smtp.entity.d.ts +9 -0
- package/server/dist/dist/modules/smtp/smtp.entity.js +60 -0
- package/server/dist/dist/modules/smtp/smtp.entity.js.map +1 -0
- package/server/dist/dist/modules/smtp/smtp.module.d.ts +2 -0
- package/server/dist/dist/modules/smtp/smtp.module.js +28 -0
- package/server/dist/dist/modules/smtp/smtp.module.js.map +1 -0
- package/server/dist/dist/modules/smtp/smtp.service.d.ts +11 -0
- package/server/dist/dist/modules/smtp/smtp.service.js +83 -0
- package/server/dist/dist/modules/smtp/smtp.service.js.map +1 -0
- package/server/dist/dist/modules/tag/tag.controller.d.ts +12 -0
- package/server/dist/dist/modules/tag/tag.controller.js +101 -0
- package/server/dist/dist/modules/tag/tag.controller.js.map +1 -0
- package/server/dist/dist/modules/tag/tag.entity.d.ts +9 -0
- package/server/dist/dist/modules/tag/tag.entity.js +59 -0
- package/server/dist/dist/modules/tag/tag.entity.js.map +1 -0
- package/server/dist/dist/modules/tag/tag.module.d.ts +2 -0
- package/server/dist/dist/modules/tag/tag.module.js +27 -0
- package/server/dist/dist/modules/tag/tag.module.js.map +1 -0
- package/server/dist/dist/modules/tag/tag.service.d.ts +13 -0
- package/server/dist/dist/modules/tag/tag.service.js +104 -0
- package/server/dist/dist/modules/tag/tag.service.js.map +1 -0
- package/server/dist/dist/modules/user/user.controller.d.ts +13 -0
- package/server/dist/dist/modules/user/user.controller.js +115 -0
- package/server/dist/dist/modules/user/user.controller.js.map +1 -0
- package/server/dist/dist/modules/user/user.entity.d.ts +15 -0
- package/server/dist/dist/modules/user/user.entity.js +96 -0
- package/server/dist/dist/modules/user/user.entity.js.map +1 -0
- package/server/dist/dist/modules/user/user.module.d.ts +2 -0
- package/server/dist/dist/modules/user/user.module.js +28 -0
- package/server/dist/dist/modules/user/user.module.js.map +1 -0
- package/server/dist/dist/modules/user/user.service.d.ts +16 -0
- package/server/dist/dist/modules/user/user.service.js +152 -0
- package/server/dist/dist/modules/user/user.service.js.map +1 -0
- package/server/dist/dist/modules/view/view.controller.d.ts +11 -0
- package/server/dist/dist/modules/view/view.controller.js +92 -0
- package/server/dist/dist/modules/view/view.controller.js.map +1 -0
- package/server/dist/dist/modules/view/view.entity.d.ts +14 -0
- package/server/dist/dist/modules/view/view.entity.js +88 -0
- package/server/dist/dist/modules/view/view.entity.js.map +1 -0
- package/server/dist/dist/modules/view/view.module.d.ts +2 -0
- package/server/dist/dist/modules/view/view.module.js +27 -0
- package/server/dist/dist/modules/view/view.module.js.map +1 -0
- package/server/dist/dist/modules/view/view.service.d.ts +11 -0
- package/server/dist/dist/modules/view/view.service.js +89 -0
- package/server/dist/dist/modules/view/view.service.js.map +1 -0
- package/server/dist/dist/modules/webhook/webhook.controller.d.ts +12 -0
- package/server/dist/dist/modules/webhook/webhook.controller.js +63 -0
- package/server/dist/dist/modules/webhook/webhook.controller.js.map +1 -0
- package/server/dist/dist/modules/webhook/webhook.entity.d.ts +9 -0
- package/server/dist/dist/modules/webhook/webhook.entity.js +54 -0
- package/server/dist/dist/modules/webhook/webhook.entity.js.map +1 -0
- package/server/dist/dist/modules/webhook/webhook.module.d.ts +2 -0
- package/server/dist/dist/modules/webhook/webhook.module.js +27 -0
- package/server/dist/dist/modules/webhook/webhook.module.js.map +1 -0
- package/server/dist/dist/modules/webhook/webhook.service.d.ts +16 -0
- package/server/dist/dist/modules/webhook/webhook.service.js +97 -0
- package/server/dist/dist/modules/webhook/webhook.service.js.map +1 -0
- package/server/dist/dist/public/favicon.png +0 -0
- package/server/dist/dist/public/index.html +439 -0
- package/server/dist/dist/public/swagger/custom.css +11 -0
- package/server/dist/dist/starter.d.ts +1 -0
- package/server/dist/dist/starter.js +84 -0
- package/server/dist/dist/starter.js.map +1 -0
- package/server/dist/dist/tsconfig.build.tsbuildinfo +16966 -0
- package/server/dist/dist/utils/date.util.d.ts +1 -0
- package/server/dist/dist/utils/date.util.js +13 -0
- package/server/dist/dist/utils/date.util.js.map +1 -0
- package/server/dist/dist/utils/ip.util.d.ts +2 -0
- package/server/dist/dist/utils/ip.util.js +27 -0
- package/server/dist/dist/utils/ip.util.js.map +1 -0
- package/server/dist/dist/utils/markdown.util.d.ts +4 -0
- package/server/dist/dist/utils/markdown.util.js +42 -0
- package/server/dist/dist/utils/markdown.util.js.map +1 -0
- package/server/dist/dist/utils/oss/aliyun-oss-client.d.ts +6 -0
- package/server/dist/dist/utils/oss/aliyun-oss-client.js +28 -0
- package/server/dist/dist/utils/oss/aliyun-oss-client.js.map +1 -0
- package/server/dist/dist/utils/oss/oss-client.d.ts +6 -0
- package/server/dist/dist/utils/oss/oss-client.js +10 -0
- package/server/dist/dist/utils/oss/oss-client.js.map +1 -0
- package/server/dist/dist/utils/oss.util.d.ts +13 -0
- package/server/dist/dist/utils/oss.util.js +49 -0
- package/server/dist/dist/utils/oss.util.js.map +1 -0
- package/server/dist/dist/utils/ua.util.d.ts +9 -0
- package/server/dist/dist/utils/ua.util.js +36 -0
- package/server/dist/dist/utils/ua.util.js.map +1 -0
- package/server/dist/dist/utils/uniqueid.util.d.ts +1 -0
- package/server/dist/dist/utils/uniqueid.util.js +9 -0
- package/server/dist/dist/utils/uniqueid.util.js.map +1 -0
- package/server/dist/dist/utils/upload.util.d.ts +5 -0
- package/server/dist/dist/utils/upload.util.js +34 -0
- package/server/dist/dist/utils/upload.util.js.map +1 -0
- package/server/dist/dist/utils/user.util.d.ts +1 -0
- package/server/dist/dist/utils/user.util.js +18 -0
- package/server/dist/dist/utils/user.util.js.map +1 -0
- package/server/logs/error/error.log.-2026-05-19.log +123 -0
- package/server/node_modules/@nestjs/cli/node_modules/rimraf/bin.js +0 -0
- package/server/node_modules/@nestjs/cli/node_modules/typescript/bin/tsc +0 -0
- package/server/node_modules/@nestjs/cli/node_modules/typescript/bin/tsserver +0 -0
- package/server/node_modules/@nestjs/common/node_modules/axios/README.md +0 -0
- package/server/node_modules/@nestjs/common/node_modules/axios/lib/adapters/http.js +0 -0
- package/server/node_modules/@nestjs/config/node_modules/uuid/dist/bin/uuid +0 -0
- package/server/node_modules/@nestjs/platform-express/node_modules/mime/cli.js +0 -0
- package/server/node_modules/@nestjs/platform-express/node_modules/mime/src/build.js +0 -0
- package/server/node_modules/@nestjs/typeorm/node_modules/uuid/dist/bin/uuid +0 -0
- package/server/node_modules/@nuxtjs/opencollective/bin/opencollective.js +0 -0
- package/server/node_modules/@pm2/agent/node_modules/dayjs/plugin/objectSupport.d.ts +0 -0
- package/server/node_modules/@pm2/agent/node_modules/semver/bin/semver.js +0 -0
- package/server/node_modules/@pm2/io/node_modules/semver/bin/semver.js +0 -0
- package/server/node_modules/@types/node/LICENSE +0 -0
- package/server/node_modules/@types/node/README.md +0 -0
- package/server/node_modules/@types/node/assert.d.ts +0 -0
- package/server/node_modules/@types/node/async_hooks.d.ts +0 -0
- package/server/node_modules/@types/node/buffer.d.ts +0 -0
- package/server/node_modules/@types/node/child_process.d.ts +0 -0
- package/server/node_modules/@types/node/cluster.d.ts +0 -0
- package/server/node_modules/@types/node/console.d.ts +0 -0
- package/server/node_modules/@types/node/constants.d.ts +0 -0
- package/server/node_modules/@types/node/crypto.d.ts +0 -0
- package/server/node_modules/@types/node/dgram.d.ts +0 -0
- package/server/node_modules/@types/node/dns.d.ts +0 -0
- package/server/node_modules/@types/node/domain.d.ts +0 -0
- package/server/node_modules/@types/node/events.d.ts +0 -0
- package/server/node_modules/@types/node/fs.d.ts +0 -0
- package/server/node_modules/@types/node/globals.d.ts +0 -0
- package/server/node_modules/@types/node/globals.global.d.ts +0 -0
- package/server/node_modules/@types/node/http.d.ts +0 -0
- package/server/node_modules/@types/node/http2.d.ts +0 -0
- package/server/node_modules/@types/node/https.d.ts +0 -0
- package/server/node_modules/@types/node/index.d.ts +0 -0
- package/server/node_modules/@types/node/inspector.d.ts +0 -0
- package/server/node_modules/@types/node/module.d.ts +0 -0
- package/server/node_modules/@types/node/net.d.ts +0 -0
- package/server/node_modules/@types/node/os.d.ts +0 -0
- package/server/node_modules/@types/node/package.json +0 -0
- package/server/node_modules/@types/node/path.d.ts +0 -0
- package/server/node_modules/@types/node/perf_hooks.d.ts +0 -0
- package/server/node_modules/@types/node/process.d.ts +0 -0
- package/server/node_modules/@types/node/punycode.d.ts +0 -0
- package/server/node_modules/@types/node/querystring.d.ts +0 -0
- package/server/node_modules/@types/node/readline.d.ts +0 -0
- package/server/node_modules/@types/node/repl.d.ts +0 -0
- package/server/node_modules/@types/node/stream.d.ts +0 -0
- package/server/node_modules/@types/node/string_decoder.d.ts +0 -0
- package/server/node_modules/@types/node/timers.d.ts +0 -0
- package/server/node_modules/@types/node/tls.d.ts +0 -0
- package/server/node_modules/@types/node/trace_events.d.ts +0 -0
- package/server/node_modules/@types/node/tty.d.ts +0 -0
- package/server/node_modules/@types/node/url.d.ts +0 -0
- package/server/node_modules/@types/node/util.d.ts +0 -0
- package/server/node_modules/@types/node/v8.d.ts +0 -0
- package/server/node_modules/@types/node/vm.d.ts +0 -0
- package/server/node_modules/@types/node/wasi.d.ts +0 -0
- package/server/node_modules/@types/node/worker_threads.d.ts +0 -0
- package/server/node_modules/@types/node/zlib.d.ts +0 -0
- package/server/node_modules/@types/zen-observable/LICENSE +0 -0
- package/server/node_modules/@types/zen-observable/README.md +0 -0
- package/server/node_modules/@types/zen-observable/esm.d.ts +0 -0
- package/server/node_modules/@types/zen-observable/extras.d.ts +0 -0
- package/server/node_modules/@types/zen-observable/index.d.ts +0 -0
- package/server/node_modules/@types/zen-observable/package.json +0 -0
- package/server/node_modules/ajv/scripts/info +0 -0
- package/server/node_modules/ajv/scripts/prepare-tests +0 -0
- package/server/node_modules/ajv/scripts/publish-built-version +0 -0
- package/server/node_modules/ajv/scripts/travis-gh-pages +0 -0
- package/server/node_modules/arr-diff/LICENSE +0 -0
- package/server/node_modules/arr-flatten/LICENSE +0 -0
- package/server/node_modules/arr-flatten/README.md +0 -0
- package/server/node_modules/array-unique/LICENSE +0 -0
- package/server/node_modules/array-unique/README.md +0 -0
- package/server/node_modules/aws-ssl-profiles/package.json +0 -0
- package/server/node_modules/axios/README.md +0 -0
- package/server/node_modules/axios/lib/adapters/http.js +0 -0
- package/server/node_modules/blessed/bin/tput.js +0 -0
- package/server/node_modules/blessed/example/blessed-telnet.js +0 -0
- package/server/node_modules/blessed/example/multiplex.js +0 -0
- package/server/node_modules/blessed/example/ping +0 -0
- package/server/node_modules/blessed/example/time.js +0 -0
- package/server/node_modules/cacache/node_modules/rimraf/bin.js +0 -0
- package/server/node_modules/cli-color/bin/generate-color-images +0 -0
- package/server/node_modules/cli-color/test/__playground/throbber.formatted.js +0 -0
- package/server/node_modules/cli-color/test/__playground/throbber.js +0 -0
- package/server/node_modules/cli-highlight/node_modules/wrap-ansi/index.js +0 -0
- package/server/node_modules/cliui/node_modules/wrap-ansi/index.js +0 -0
- package/server/node_modules/constants-browserify/build.sh +0 -0
- package/server/node_modules/copy-concurrently/node_modules/rimraf/bin.js +0 -0
- package/server/node_modules/copyfiles/copyfiles +0 -0
- package/server/node_modules/copyfiles/index.js +0 -0
- package/server/node_modules/cross-env/README.md +0 -0
- package/server/node_modules/date-fns/esm/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousDay/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousFriday/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousMonday/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousSaturday/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousSunday/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousThursday/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousTuesday/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousWednesday/index.js +0 -0
- package/server/node_modules/date-fns/index.js +0 -0
- package/server/node_modules/date-fns/previousDay/index.js +0 -0
- package/server/node_modules/date-fns/previousFriday/index.js +0 -0
- package/server/node_modules/date-fns/previousMonday/index.js +0 -0
- package/server/node_modules/date-fns/previousSaturday/index.js +0 -0
- package/server/node_modules/date-fns/previousSunday/index.js +0 -0
- package/server/node_modules/date-fns/previousThursday/index.js +0 -0
- package/server/node_modules/date-fns/previousTuesday/index.js +0 -0
- package/server/node_modules/date-fns/previousWednesday/index.js +0 -0
- package/server/node_modules/dayjs/plugin/arraySupport.d.ts +0 -0
- package/server/node_modules/dayjs/plugin/objectSupport.d.ts +0 -0
- package/server/node_modules/default-user-agent/node_modules/os-name/cli.js +0 -0
- package/server/node_modules/degenerator/node_modules/escodegen/bin/escodegen.js +0 -0
- package/server/node_modules/degenerator/node_modules/escodegen/bin/esgenerate.js +0 -0
- package/server/node_modules/emojis-list/LICENSE.md +0 -0
- package/server/node_modules/emojis-list/README.md +0 -0
- package/server/node_modules/errno/build.js +0 -0
- package/server/node_modules/errno/cli.js +0 -0
- package/server/node_modules/es5-ext/_postinstall.js +0 -0
- package/server/node_modules/esprima/bin/esparse.js +0 -0
- package/server/node_modules/esprima/bin/esvalidate.js +0 -0
- package/server/node_modules/esrecurse/package.json +0 -0
- package/server/node_modules/execa/node_modules/semver/bin/semver +0 -0
- package/server/node_modules/execa/node_modules/which/bin/which +0 -0
- package/server/node_modules/extrareqp2/README.md +0 -0
- package/server/node_modules/extrareqp2/lib/adapters/http.js +0 -0
- package/server/node_modules/fork-ts-checker-webpack-plugin/node_modules/semver/bin/semver +0 -0
- package/server/node_modules/is-class-hotfix/.editorconfig +0 -0
- package/server/node_modules/is-class-hotfix/.gitattributes +0 -0
- package/server/node_modules/is-class-hotfix/CHANGELOG.md +0 -0
- package/server/node_modules/is-class-hotfix/LICENSE.md +0 -0
- package/server/node_modules/is-class-hotfix/README.md +0 -0
- package/server/node_modules/is-class-hotfix/bower.json +0 -0
- package/server/node_modules/is-class-hotfix/is-class.js +0 -0
- package/server/node_modules/is-class-hotfix/package.json +0 -0
- package/server/node_modules/is-class-hotfix/test/is-class.js +0 -0
- package/server/node_modules/is-docker/cli.js +0 -0
- package/server/node_modules/js-yaml/bin/js-yaml.js +0 -0
- package/server/node_modules/jsonwebtoken/node_modules/semver/bin/semver +0 -0
- package/server/node_modules/jstoxml/dist.sh +0 -0
- package/server/node_modules/log4js/lib/appenders/fileSync.js +0 -0
- package/server/node_modules/log4js/lib/connect-logger.js +0 -0
- package/server/node_modules/make-dir/node_modules/semver/bin/semver +0 -0
- package/server/node_modules/micromatch/LICENSE +0 -0
- package/server/node_modules/miller-rabin/bin/miller-rabin +0 -0
- package/server/node_modules/mime/cli.js +0 -0
- package/server/node_modules/mkdirp/bin/cmd.js +0 -0
- package/server/node_modules/move-concurrently/node_modules/rimraf/bin.js +0 -0
- package/server/node_modules/nan/tools/1to2.js +0 -0
- package/server/node_modules/needle/bin/needle +0 -0
- package/server/node_modules/node-libs-browser/node_modules/buffer/bin/download-node-tests.js +0 -0
- package/server/node_modules/node-libs-browser/node_modules/buffer/bin/update-authors.sh +0 -0
- package/server/node_modules/open/xdg-open +0 -0
- package/server/node_modules/osx-release/cli.js +0 -0
- package/server/node_modules/pm2/bin/pm2 +0 -0
- package/server/node_modules/pm2/bin/pm2-dev +0 -0
- package/server/node_modules/pm2/bin/pm2-docker +0 -0
- package/server/node_modules/pm2/bin/pm2-runtime +0 -0
- package/server/node_modules/pm2/lib/templates/init-scripts/openrc.tpl +0 -0
- package/server/node_modules/pm2/lib/tools/xdg-open +0 -0
- package/server/node_modules/pm2/node_modules/mkdirp/bin/cmd.js +0 -0
- package/server/node_modules/pm2/pm2 +0 -0
- package/server/node_modules/pm2-deploy/deploy +0 -0
- package/server/node_modules/require-in-the-middle/node_modules/resolve/bin/resolve +0 -0
- package/server/node_modules/rimraf/bin.js +0 -0
- package/server/node_modules/segment/repl +0 -0
- package/server/node_modules/semver/bin/semver.js +0 -0
- package/server/node_modules/send/node_modules/mime/cli.js +0 -0
- package/server/node_modules/send/node_modules/mime/src/build.js +0 -0
- package/server/node_modules/sha.js/bin.js +0 -0
- package/server/node_modules/systeminformation/lib/cli.js +0 -0
- package/server/node_modules/terser/bin/terser +0 -0
- package/server/node_modules/terser/bin/uglifyjs +0 -0
- package/server/node_modules/tree-kill/cli.js +0 -0
- package/server/node_modules/tree-kill/index.js +0 -0
- package/server/node_modules/typeorm/cli.js +0 -0
- package/server/node_modules/typeorm/node_modules/mkdirp/bin/cmd.js +0 -0
- package/server/node_modules/typeorm/node_modules/uuid/dist/bin/uuid +0 -0
- package/server/node_modules/typeorm/node_modules/wrap-ansi/index.js +0 -0
- package/server/node_modules/ua-parser-js/script/cli.js +0 -0
- package/server/node_modules/ua-parser-js/src/ua-parser.js +0 -0
- package/server/node_modules/upath/LICENSE +0 -0
- package/server/node_modules/uri-js/LICENSE +0 -0
- package/server/node_modules/uri-js/README.md +0 -0
- package/server/node_modules/uri-js/dist/es5/uri.all.d.ts +0 -0
- package/server/node_modules/uri-js/dist/es5/uri.all.js +0 -0
- package/server/node_modules/uri-js/dist/es5/uri.all.js.map +0 -0
- package/server/node_modules/uri-js/dist/es5/uri.all.min.d.ts +0 -0
- package/server/node_modules/uri-js/dist/es5/uri.all.min.js +0 -0
- package/server/node_modules/uri-js/dist/es5/uri.all.min.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/index.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/index.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/index.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/regexps-iri.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/regexps-iri.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/regexps-iri.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/regexps-uri.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/regexps-uri.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/regexps-uri.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/http.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/http.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/http.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/https.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/https.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/https.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/mailto.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/mailto.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/urn.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/urn.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/urn.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/ws.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/ws.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/ws.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/wss.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/wss.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/wss.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/uri.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/uri.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/uri.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/util.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/util.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/util.js.map +0 -0
- package/server/node_modules/uri-js/package.json +0 -0
- package/server/node_modules/uri-js/yarn.lock +0 -0
- package/server/node_modules/uuid/dist/bin/uuid +0 -0
- package/server/node_modules/webpack/node_modules/acorn/bin/acorn +0 -0
- package/server/node_modules/webpack/node_modules/ajv/scripts/info +0 -0
- package/server/node_modules/webpack/node_modules/ajv/scripts/prepare-tests +0 -0
- package/server/node_modules/webpack/node_modules/ajv/scripts/publish-built-version +0 -0
- package/server/node_modules/webpack/node_modules/ajv/scripts/travis-gh-pages +0 -0
- package/server/node_modules/which/bin/node-which +0 -0
- package/server/node_modules/win-release/node_modules/semver/bin/semver +0 -0
- package/server/node_modules/wrap-ansi/index.js +0 -0
- package/templates/nginx.dev.conf +57 -0
- package/templates/nginx.prod.conf +75 -0
- package/ui/banner.js +432 -13
- package/ui/interactive.js +248 -52
- package/ui/theme.js +250 -10
package/lib/nginx.js
ADDED
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const http = require('http');
|
|
4
|
+
const { spawnSync } = require('child_process');
|
|
5
|
+
const open = require('open');
|
|
6
|
+
const { detectProjectType } = require('./project-type');
|
|
7
|
+
const { isDockerRunning, pickDockerComposeCommand } = require('./docker');
|
|
8
|
+
const { t } = require('./i18n');
|
|
9
|
+
|
|
10
|
+
const NGINX_CONTAINER = 'reactpress_nginx';
|
|
11
|
+
const DEFAULT_NGINX_PORT = 80;
|
|
12
|
+
|
|
13
|
+
function resolveNginxMode(options = {}) {
|
|
14
|
+
return options.prod ? 'prod' : 'dev';
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function resolveNginxConfigBasename(mode) {
|
|
18
|
+
return mode === 'prod' ? 'nginx.conf' : 'nginx.dev.conf';
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function resolveNginxConfigPath(projectRoot, mode = 'dev') {
|
|
22
|
+
const basename = resolveNginxConfigBasename(mode);
|
|
23
|
+
const type = detectProjectType(projectRoot);
|
|
24
|
+
if (type === 'monorepo') {
|
|
25
|
+
return path.join(projectRoot, basename);
|
|
26
|
+
}
|
|
27
|
+
return path.join(projectRoot, '.reactpress', basename);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function bundledTemplatePath(mode) {
|
|
31
|
+
const file = mode === 'prod' ? 'nginx.prod.conf' : 'nginx.dev.conf';
|
|
32
|
+
return path.join(__dirname, '..', 'templates', file);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function resolveNginxPort(projectRoot) {
|
|
36
|
+
const envPath = path.join(projectRoot, '.env');
|
|
37
|
+
try {
|
|
38
|
+
const content = fs.readFileSync(envPath, 'utf8');
|
|
39
|
+
const m = content.match(/^NGINX_PORT=(.+)$/m);
|
|
40
|
+
if (m) {
|
|
41
|
+
const port = parseInt(m[1].trim().replace(/^['"]|['"]$/g, ''), 10);
|
|
42
|
+
if (port > 0) return port;
|
|
43
|
+
}
|
|
44
|
+
} catch {
|
|
45
|
+
// ignore
|
|
46
|
+
}
|
|
47
|
+
return DEFAULT_NGINX_PORT;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function nginxEntryUrl(projectRoot) {
|
|
51
|
+
const port = resolveNginxPort(projectRoot);
|
|
52
|
+
return port === 80 ? 'http://localhost' : `http://localhost:${port}`;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Write default nginx config from CLI templates when missing (or when force).
|
|
57
|
+
*
|
|
58
|
+
* @returns {{ configPath: string, created: boolean, mode: 'dev' | 'prod' }}
|
|
59
|
+
*/
|
|
60
|
+
function ensureNginxConfig(projectRoot, options = {}) {
|
|
61
|
+
const mode = resolveNginxMode(options);
|
|
62
|
+
const configPath = resolveNginxConfigPath(projectRoot, mode);
|
|
63
|
+
const templatePath = bundledTemplatePath(mode);
|
|
64
|
+
if (!fs.existsSync(templatePath)) {
|
|
65
|
+
throw new Error(t('nginx.templateMissing', { path: templatePath }));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const exists = fs.existsSync(configPath);
|
|
69
|
+
if (exists && !options.force) {
|
|
70
|
+
return { configPath, created: false, mode };
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
fs.mkdirSync(path.dirname(configPath), { recursive: true });
|
|
74
|
+
fs.copyFileSync(templatePath, configPath);
|
|
75
|
+
return { configPath, created: !exists || !!options.force, mode };
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function resolveNginxComposeContext(projectRoot, mode = 'dev') {
|
|
79
|
+
const type = detectProjectType(projectRoot);
|
|
80
|
+
if (mode === 'prod' && type === 'monorepo') {
|
|
81
|
+
return {
|
|
82
|
+
composeFile: path.join(projectRoot, 'docker-compose.prod.yml'),
|
|
83
|
+
cwd: projectRoot,
|
|
84
|
+
service: 'nginx',
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
if (type === 'monorepo') {
|
|
88
|
+
return {
|
|
89
|
+
composeFile: path.join(projectRoot, 'docker-compose.dev.yml'),
|
|
90
|
+
cwd: projectRoot,
|
|
91
|
+
service: 'nginx',
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
composeFile: path.join(projectRoot, '.reactpress', 'docker-compose.yml'),
|
|
96
|
+
cwd: path.join(projectRoot, '.reactpress'),
|
|
97
|
+
service: 'nginx',
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function composeDefinesNginxService(composeFile) {
|
|
102
|
+
try {
|
|
103
|
+
const content = fs.readFileSync(composeFile, 'utf8');
|
|
104
|
+
return /^\s*nginx:\s*$/m.test(content);
|
|
105
|
+
} catch {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function runComposeOnContext(ctx, args, options = {}) {
|
|
111
|
+
const { command, baseArgs } = pickDockerComposeCommand();
|
|
112
|
+
return spawnSync(command, [...baseArgs, '-f', ctx.composeFile, ...args], {
|
|
113
|
+
stdio: options.stdio ?? 'inherit',
|
|
114
|
+
cwd: ctx.cwd,
|
|
115
|
+
...options,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function isNginxContainerRunning() {
|
|
120
|
+
const res = spawnSync(
|
|
121
|
+
'docker',
|
|
122
|
+
['inspect', '-f', '{{.State.Running}}', NGINX_CONTAINER],
|
|
123
|
+
{ encoding: 'utf8' }
|
|
124
|
+
);
|
|
125
|
+
return res.status === 0 && res.stdout.trim() === 'true';
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function startNginxContainer(configPath, port) {
|
|
129
|
+
spawnSync('docker', ['rm', '-f', NGINX_CONTAINER], { stdio: 'ignore' });
|
|
130
|
+
const absConfig = path.resolve(configPath);
|
|
131
|
+
const res = spawnSync(
|
|
132
|
+
'docker',
|
|
133
|
+
[
|
|
134
|
+
'run',
|
|
135
|
+
'-d',
|
|
136
|
+
'--name',
|
|
137
|
+
NGINX_CONTAINER,
|
|
138
|
+
'-p',
|
|
139
|
+
`${port}:80`,
|
|
140
|
+
'-v',
|
|
141
|
+
`${absConfig}:/etc/nginx/conf.d/default.conf:ro`,
|
|
142
|
+
'--add-host',
|
|
143
|
+
'host.docker.internal:host-gateway',
|
|
144
|
+
'nginx:alpine',
|
|
145
|
+
],
|
|
146
|
+
{ encoding: 'utf8' }
|
|
147
|
+
);
|
|
148
|
+
if (res.status !== 0) {
|
|
149
|
+
throw new Error(res.stderr?.trim() || t('nginx.startFailed'));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function stopNginxContainer() {
|
|
154
|
+
spawnSync('docker', ['rm', '-sf', NGINX_CONTAINER], { stdio: 'ignore' });
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function nginxUp(projectRoot, options = {}) {
|
|
158
|
+
if (!isDockerRunning()) {
|
|
159
|
+
throw new Error(t('docker.notRunning'));
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const mode = resolveNginxMode(options);
|
|
163
|
+
const type = detectProjectType(projectRoot);
|
|
164
|
+
|
|
165
|
+
if (mode === 'prod' && type !== 'monorepo') {
|
|
166
|
+
throw new Error(t('nginx.prodMonorepoOnly'));
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const { configPath } = ensureNginxConfig(projectRoot, { mode, force: options.force });
|
|
170
|
+
const port = resolveNginxPort(projectRoot);
|
|
171
|
+
const ctx = resolveNginxComposeContext(projectRoot, mode);
|
|
172
|
+
|
|
173
|
+
if (fs.existsSync(ctx.composeFile) && composeDefinesNginxService(ctx.composeFile)) {
|
|
174
|
+
const result = runComposeOnContext(ctx, ['up', '-d', ctx.service]);
|
|
175
|
+
if (result.status !== 0) {
|
|
176
|
+
throw new Error(t('nginx.startFailed'));
|
|
177
|
+
}
|
|
178
|
+
} else {
|
|
179
|
+
startNginxContainer(configPath, port);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
console.log(t('nginx.started', { url: nginxEntryUrl(projectRoot) }));
|
|
183
|
+
console.log(t('nginx.configPath', { path: configPath }));
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
function nginxDown(projectRoot, options = {}) {
|
|
187
|
+
const mode = resolveNginxMode(options);
|
|
188
|
+
const ctx = resolveNginxComposeContext(projectRoot, mode);
|
|
189
|
+
if (fs.existsSync(ctx.composeFile) && composeDefinesNginxService(ctx.composeFile)) {
|
|
190
|
+
runComposeOnContext(ctx, ['stop', ctx.service], { stdio: 'ignore' });
|
|
191
|
+
}
|
|
192
|
+
stopNginxContainer();
|
|
193
|
+
console.log(t('nginx.stopped'));
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
function nginxRestart(projectRoot, options = {}) {
|
|
197
|
+
nginxDown(projectRoot, options);
|
|
198
|
+
nginxUp(projectRoot, options);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
function nginxStatus(projectRoot, options = {}) {
|
|
202
|
+
const mode = resolveNginxMode(options);
|
|
203
|
+
const configPath = resolveNginxConfigPath(projectRoot, mode);
|
|
204
|
+
const port = resolveNginxPort(projectRoot);
|
|
205
|
+
const running = isNginxContainerRunning();
|
|
206
|
+
const configExists = fs.existsSync(configPath);
|
|
207
|
+
|
|
208
|
+
console.log(t('nginx.statusTitle'));
|
|
209
|
+
console.log(t('nginx.statusContainer', { name: NGINX_CONTAINER, running: running ? t('common.yes') : t('common.no') }));
|
|
210
|
+
console.log(t('nginx.statusConfig', { path: configPath, exists: configExists ? t('common.yes') : t('common.no') }));
|
|
211
|
+
console.log(t('nginx.statusUrl', { url: nginxEntryUrl(projectRoot), port }));
|
|
212
|
+
console.log(t('nginx.statusMode', { mode }));
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
function nginxLogs(extraArgs = []) {
|
|
216
|
+
const args = ['logs', '-f', NGINX_CONTAINER, ...extraArgs];
|
|
217
|
+
spawnSync('docker', args, { stdio: 'inherit' });
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function dockerExecNginx(args) {
|
|
221
|
+
return spawnSync('docker', ['exec', NGINX_CONTAINER, 'nginx', ...args], {
|
|
222
|
+
encoding: 'utf8',
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function nginxTest() {
|
|
227
|
+
if (!isNginxContainerRunning()) {
|
|
228
|
+
throw new Error(t('nginx.notRunning'));
|
|
229
|
+
}
|
|
230
|
+
const res = dockerExecNginx(['-t']);
|
|
231
|
+
process.stdout.write(res.stdout || '');
|
|
232
|
+
process.stderr.write(res.stderr || '');
|
|
233
|
+
if (res.status !== 0) {
|
|
234
|
+
throw new Error(t('nginx.testFailed'));
|
|
235
|
+
}
|
|
236
|
+
console.log(t('nginx.testOk'));
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
function nginxReload() {
|
|
240
|
+
nginxTest();
|
|
241
|
+
const res = dockerExecNginx(['-s', 'reload']);
|
|
242
|
+
if (res.status !== 0) {
|
|
243
|
+
throw new Error(res.stderr?.trim() || t('nginx.reloadFailed'));
|
|
244
|
+
}
|
|
245
|
+
console.log(t('nginx.reloadOk'));
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
async function nginxOpen(projectRoot) {
|
|
249
|
+
const url = nginxEntryUrl(projectRoot);
|
|
250
|
+
console.log(t('nginx.opening', { url }));
|
|
251
|
+
await open(url);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function probeNginxHealth(projectRoot, timeoutMs = 2000) {
|
|
255
|
+
const url = new URL('/health', nginxEntryUrl(projectRoot));
|
|
256
|
+
return new Promise((resolve) => {
|
|
257
|
+
const req = http.get(url, { timeout: timeoutMs }, (res) => {
|
|
258
|
+
res.resume();
|
|
259
|
+
resolve(res.statusCode === 200);
|
|
260
|
+
});
|
|
261
|
+
req.on('error', () => resolve(false));
|
|
262
|
+
req.on('timeout', () => {
|
|
263
|
+
req.destroy();
|
|
264
|
+
resolve(false);
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
async function checkNginx(projectRoot) {
|
|
270
|
+
if (!isDockerRunning()) {
|
|
271
|
+
return { ok: true, message: t('nginx.doctorSkippedDocker') };
|
|
272
|
+
}
|
|
273
|
+
if (!isNginxContainerRunning()) {
|
|
274
|
+
return { ok: true, message: t('nginx.doctorSkippedNotRunning') };
|
|
275
|
+
}
|
|
276
|
+
const healthy = await probeNginxHealth(projectRoot);
|
|
277
|
+
if (healthy) {
|
|
278
|
+
return {
|
|
279
|
+
ok: true,
|
|
280
|
+
message: t('nginx.doctorOk', { url: nginxEntryUrl(projectRoot) }),
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
return {
|
|
284
|
+
ok: false,
|
|
285
|
+
message: t('nginx.doctorUnhealthy', { url: nginxEntryUrl(projectRoot) }),
|
|
286
|
+
fix: t('nginx.doctorUnhealthyFix'),
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
async function runNginxCommand(command, projectRoot, extraArgs = [], options = {}) {
|
|
291
|
+
switch (command) {
|
|
292
|
+
case 'ensure': {
|
|
293
|
+
const { configPath, created } = ensureNginxConfig(projectRoot, options);
|
|
294
|
+
console.log(
|
|
295
|
+
created ? t('nginx.configCreated', { path: configPath }) : t('nginx.configExists', { path: configPath })
|
|
296
|
+
);
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
case 'up':
|
|
300
|
+
nginxUp(projectRoot, options);
|
|
301
|
+
return;
|
|
302
|
+
case 'down':
|
|
303
|
+
case 'stop':
|
|
304
|
+
nginxDown(projectRoot, options);
|
|
305
|
+
return;
|
|
306
|
+
case 'restart':
|
|
307
|
+
nginxRestart(projectRoot, options);
|
|
308
|
+
return;
|
|
309
|
+
case 'status':
|
|
310
|
+
nginxStatus(projectRoot, options);
|
|
311
|
+
return;
|
|
312
|
+
case 'logs':
|
|
313
|
+
nginxLogs(extraArgs);
|
|
314
|
+
return;
|
|
315
|
+
case 'test':
|
|
316
|
+
nginxTest();
|
|
317
|
+
return;
|
|
318
|
+
case 'reload':
|
|
319
|
+
nginxReload();
|
|
320
|
+
return;
|
|
321
|
+
case 'open':
|
|
322
|
+
await nginxOpen(projectRoot);
|
|
323
|
+
return;
|
|
324
|
+
default:
|
|
325
|
+
throw new Error(t('nginx.unknownCommand', { command }));
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
module.exports = {
|
|
330
|
+
NGINX_CONTAINER,
|
|
331
|
+
DEFAULT_NGINX_PORT,
|
|
332
|
+
resolveNginxMode,
|
|
333
|
+
resolveNginxConfigPath,
|
|
334
|
+
resolveNginxComposeContext,
|
|
335
|
+
ensureNginxConfig,
|
|
336
|
+
nginxEntryUrl,
|
|
337
|
+
resolveNginxPort,
|
|
338
|
+
isNginxContainerRunning,
|
|
339
|
+
probeNginxHealth,
|
|
340
|
+
checkNginx,
|
|
341
|
+
runNginxCommand,
|
|
342
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Decide whether a given directory is a ReactPress monorepo checkout (with
|
|
6
|
+
* editable `server/src`, `client/`, `toolkit/`) or a standalone project that
|
|
7
|
+
* was created with `reactpress init` and relies on the bundled runtime.
|
|
8
|
+
*
|
|
9
|
+
* @param {string} root absolute project root
|
|
10
|
+
* @returns {'monorepo' | 'standalone' | 'unknown'}
|
|
11
|
+
*/
|
|
12
|
+
function detectProjectType(root) {
|
|
13
|
+
if (!root) return 'unknown';
|
|
14
|
+
const abs = path.resolve(root);
|
|
15
|
+
|
|
16
|
+
const monorepoMarkers = [
|
|
17
|
+
path.join(abs, 'pnpm-workspace.yaml'),
|
|
18
|
+
path.join(abs, 'server', 'src', 'main.ts'),
|
|
19
|
+
];
|
|
20
|
+
if (monorepoMarkers.some((p) => fs.existsSync(p))) {
|
|
21
|
+
return 'monorepo';
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (fs.existsSync(path.join(abs, '.reactpress', 'config.json'))) {
|
|
25
|
+
return 'standalone';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return 'unknown';
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @param {string} root
|
|
33
|
+
*/
|
|
34
|
+
function hasClient(root) {
|
|
35
|
+
return fs.existsSync(path.join(root, 'client', 'package.json'));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @param {string} root
|
|
40
|
+
*/
|
|
41
|
+
function hasServerSource(root) {
|
|
42
|
+
return fs.existsSync(path.join(root, 'server', 'src', 'main.ts'));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @param {string} root
|
|
47
|
+
*/
|
|
48
|
+
function hasToolkit(root) {
|
|
49
|
+
return fs.existsSync(path.join(root, 'toolkit', 'package.json'));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @param {string} root
|
|
54
|
+
*/
|
|
55
|
+
function describeProject(root) {
|
|
56
|
+
const type = detectProjectType(root);
|
|
57
|
+
return {
|
|
58
|
+
type,
|
|
59
|
+
root,
|
|
60
|
+
hasClient: hasClient(root),
|
|
61
|
+
hasServerSource: hasServerSource(root),
|
|
62
|
+
hasToolkit: hasToolkit(root),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
module.exports = {
|
|
67
|
+
detectProjectType,
|
|
68
|
+
describeProject,
|
|
69
|
+
hasClient,
|
|
70
|
+
hasServerSource,
|
|
71
|
+
hasToolkit,
|
|
72
|
+
};
|
package/lib/publish.js
CHANGED
|
@@ -7,6 +7,15 @@ const chalk = require('chalk');
|
|
|
7
7
|
const inquirer = require('inquirer');
|
|
8
8
|
const crypto = require('crypto');
|
|
9
9
|
const { t } = require('./i18n');
|
|
10
|
+
const { getMonorepoRoot } = require('./root');
|
|
11
|
+
|
|
12
|
+
function getWorkspaceRoot() {
|
|
13
|
+
const root = getMonorepoRoot();
|
|
14
|
+
if (fs.existsSync(path.join(root, 'pnpm-workspace.yaml'))) {
|
|
15
|
+
return root;
|
|
16
|
+
}
|
|
17
|
+
return process.cwd();
|
|
18
|
+
}
|
|
10
19
|
|
|
11
20
|
function getPackages() {
|
|
12
21
|
return [
|
|
@@ -67,7 +76,7 @@ function generateHash(filePath) {
|
|
|
67
76
|
|
|
68
77
|
// Get package content hash
|
|
69
78
|
function getPackageHash(packagePath) {
|
|
70
|
-
const fullPath = path.join(
|
|
79
|
+
const fullPath = path.join(getWorkspaceRoot(), packagePath);
|
|
71
80
|
return generateHash(fullPath);
|
|
72
81
|
}
|
|
73
82
|
|
|
@@ -75,7 +84,7 @@ function getPackageHash(packagePath) {
|
|
|
75
84
|
function hasMeaningfulChangesForBuild(packagePath, packageName) {
|
|
76
85
|
try {
|
|
77
86
|
// Create a hash file path to store previous hash in node_modules
|
|
78
|
-
const hashFilePath = path.join(
|
|
87
|
+
const hashFilePath = path.join(getWorkspaceRoot(), 'node_modules', '.build-cache', `${packageName.replace('/', '_')}.hash`);
|
|
79
88
|
|
|
80
89
|
// Generate current hash
|
|
81
90
|
const currentHash = getPackageHash(packagePath);
|
|
@@ -98,7 +107,7 @@ function hasMeaningfulChangesForBuild(packagePath, packageName) {
|
|
|
98
107
|
function hasMeaningfulChangesForPublish(packagePath, packageName) {
|
|
99
108
|
try {
|
|
100
109
|
// Create a hash file path to store previous hash in node_modules
|
|
101
|
-
const hashFilePath = path.join(
|
|
110
|
+
const hashFilePath = path.join(getWorkspaceRoot(), 'node_modules', '.publish-cache', `${packageName.replace('/', '_')}.hash`);
|
|
102
111
|
|
|
103
112
|
// Generate current hash
|
|
104
113
|
const currentHash = getPackageHash(packagePath);
|
|
@@ -120,7 +129,7 @@ function hasMeaningfulChangesForPublish(packagePath, packageName) {
|
|
|
120
129
|
// Save package hash (for build)
|
|
121
130
|
function savePackageHashForBuild(packagePath, packageName) {
|
|
122
131
|
try {
|
|
123
|
-
const hashFilePath = path.join(
|
|
132
|
+
const hashFilePath = path.join(getWorkspaceRoot(), 'node_modules', '.build-cache', `${packageName.replace('/', '_')}.hash`);
|
|
124
133
|
|
|
125
134
|
// Ensure cache directory exists
|
|
126
135
|
const cacheDir = path.dirname(hashFilePath);
|
|
@@ -139,7 +148,7 @@ function savePackageHashForBuild(packagePath, packageName) {
|
|
|
139
148
|
// Save package hash (for publish)
|
|
140
149
|
function savePackageHashForPublish(packagePath, packageName) {
|
|
141
150
|
try {
|
|
142
|
-
const hashFilePath = path.join(
|
|
151
|
+
const hashFilePath = path.join(getWorkspaceRoot(), 'node_modules', '.publish-cache', `${packageName.replace('/', '_')}.hash`);
|
|
143
152
|
|
|
144
153
|
// Ensure cache directory exists
|
|
145
154
|
const cacheDir = path.dirname(hashFilePath);
|
|
@@ -158,7 +167,7 @@ function savePackageHashForPublish(packagePath, packageName) {
|
|
|
158
167
|
// Get current versions
|
|
159
168
|
function getCurrentVersion(packagePath) {
|
|
160
169
|
try {
|
|
161
|
-
const pkgPath = path.join(
|
|
170
|
+
const pkgPath = path.join(getWorkspaceRoot(), packagePath, 'package.json');
|
|
162
171
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
163
172
|
return pkg.version;
|
|
164
173
|
} catch (error) {
|
|
@@ -168,10 +177,12 @@ function getCurrentVersion(packagePath) {
|
|
|
168
177
|
|
|
169
178
|
// Increment version based on type
|
|
170
179
|
function incrementVersion(version, type) {
|
|
171
|
-
const
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
const
|
|
180
|
+
const base = String(version).split('-')[0];
|
|
181
|
+
const parts = base.split('.').map((p) => parseInt(p, 10));
|
|
182
|
+
while (parts.length < 3) parts.push(0);
|
|
183
|
+
const major = Number.isFinite(parts[0]) ? parts[0] : 0;
|
|
184
|
+
const minor = Number.isFinite(parts[1]) ? parts[1] : 0;
|
|
185
|
+
const patch = Number.isFinite(parts[2]) ? parts[2] : 0;
|
|
175
186
|
|
|
176
187
|
switch (type) {
|
|
177
188
|
case 'major':
|
|
@@ -246,7 +257,7 @@ function getNextAvailableVersion(packageName, currentVersion, versionType) {
|
|
|
246
257
|
function updateVersion(packagePath, newVersion) {
|
|
247
258
|
console.log(chalk.blue(`\n✏️ Updating version to ${newVersion}...`));
|
|
248
259
|
|
|
249
|
-
const pkgPath = path.join(
|
|
260
|
+
const pkgPath = path.join(getWorkspaceRoot(), packagePath, 'package.json');
|
|
250
261
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
251
262
|
|
|
252
263
|
const oldVersion = pkg.version;
|
|
@@ -260,7 +271,7 @@ function updateVersion(packagePath, newVersion) {
|
|
|
260
271
|
function fixWorkspaceDependenciesForBuild(packagePath) {
|
|
261
272
|
console.log(chalk.blue(`🔧 Fixing workspace dependencies for build: ${packagePath}...`));
|
|
262
273
|
|
|
263
|
-
const pkgPath = path.join(
|
|
274
|
+
const pkgPath = path.join(getWorkspaceRoot(), packagePath, 'package.json');
|
|
264
275
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
265
276
|
|
|
266
277
|
// Fix dependencies
|
|
@@ -291,7 +302,7 @@ function fixWorkspaceDependenciesForBuild(packagePath) {
|
|
|
291
302
|
function restoreWorkspaceDependenciesAfterBuild(packagePath) {
|
|
292
303
|
console.log(chalk.blue(`🔄 Restoring workspace dependencies after build: ${packagePath}...`));
|
|
293
304
|
|
|
294
|
-
const pkgPath = path.join(
|
|
305
|
+
const pkgPath = path.join(getWorkspaceRoot(), packagePath, 'package.json');
|
|
295
306
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
296
307
|
|
|
297
308
|
// Restore dependencies
|
|
@@ -319,7 +330,7 @@ function restoreWorkspaceDependenciesAfterBuild(packagePath) {
|
|
|
319
330
|
function fixWorkspaceDependenciesForPublish(packagePath, packageVersions) {
|
|
320
331
|
console.log(chalk.blue(`🔧 Fixing workspace dependencies for publish: ${packagePath}...`));
|
|
321
332
|
|
|
322
|
-
const pkgPath = path.join(
|
|
333
|
+
const pkgPath = path.join(getWorkspaceRoot(), packagePath, 'package.json');
|
|
323
334
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
324
335
|
|
|
325
336
|
// Fix dependencies
|
|
@@ -350,7 +361,7 @@ function fixWorkspaceDependenciesForPublish(packagePath, packageVersions) {
|
|
|
350
361
|
function restoreWorkspaceDependenciesAfterPublish(packagePath) {
|
|
351
362
|
console.log(chalk.blue(`🔄 Restoring workspace dependencies for ${packagePath}...`));
|
|
352
363
|
|
|
353
|
-
const pkgPath = path.join(
|
|
364
|
+
const pkgPath = path.join(getWorkspaceRoot(), packagePath, 'package.json');
|
|
354
365
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
355
366
|
|
|
356
367
|
// Restore dependencies
|
|
@@ -383,15 +394,22 @@ function buildPackage(pkg) {
|
|
|
383
394
|
fixWorkspaceDependenciesForBuild(pkg.path);
|
|
384
395
|
|
|
385
396
|
try {
|
|
386
|
-
|
|
387
|
-
|
|
397
|
+
const pkgDir = path.join(getWorkspaceRoot(), pkg.path);
|
|
398
|
+
if (pkg.path === 'cli') {
|
|
399
|
+
execSync('node scripts/sync-bundled-core.mjs', { cwd: pkgDir, stdio: 'inherit' });
|
|
400
|
+
if (fs.existsSync(path.join(pkgDir, 'server', 'package.json'))) {
|
|
401
|
+
execSync('pnpm run build', { cwd: path.join(pkgDir, 'server'), stdio: 'inherit' });
|
|
402
|
+
}
|
|
403
|
+
} else if (pkg.path === 'server') {
|
|
404
|
+
execSync('pnpm run build', { cwd: pkgDir, stdio: 'inherit' });
|
|
388
405
|
} else if (pkg.path === 'client') {
|
|
389
|
-
execSync('pnpm run prebuild && pnpm run build', { cwd:
|
|
406
|
+
execSync('pnpm run prebuild && pnpm run build', { cwd: pkgDir, stdio: 'inherit' });
|
|
390
407
|
} else if (pkg.path === 'toolkit') {
|
|
391
|
-
execSync('pnpm run build', { cwd:
|
|
408
|
+
execSync('pnpm run build', { cwd: pkgDir, stdio: 'inherit' });
|
|
392
409
|
} else if (pkg.path === 'templates/hello-world' || pkg.path === 'templates/twentytwentyfive') {
|
|
393
|
-
// Templates don't need to be built, just validate package.json
|
|
394
410
|
console.log(chalk.gray(' Templates do not require building, skipping...'));
|
|
411
|
+
} else if (fs.existsSync(path.join(pkgDir, 'package.json'))) {
|
|
412
|
+
execSync('pnpm run build', { cwd: pkgDir, stdio: 'inherit' });
|
|
395
413
|
}
|
|
396
414
|
console.log(chalk.green(`✅ ${pkg.name} built successfully`));
|
|
397
415
|
} finally {
|
|
@@ -410,7 +428,7 @@ function publishPackage(packagePath, packageName, tag = 'latest') {
|
|
|
410
428
|
|
|
411
429
|
try {
|
|
412
430
|
const command = `pnpm publish --access public --tag ${tag} --registry https://registry.npmjs.org --no-git-checks`;
|
|
413
|
-
execSync(command, { cwd: path.join(
|
|
431
|
+
execSync(command, { cwd: path.join(getWorkspaceRoot(), packagePath), stdio: 'inherit' });
|
|
414
432
|
console.log(chalk.green(`✅ ${packageName} published successfully!`));
|
|
415
433
|
} catch (error) {
|
|
416
434
|
console.log(chalk.red(`❌ Failed to publish ${packageName}`));
|
|
@@ -472,7 +490,7 @@ async function buildPackages() {
|
|
|
472
490
|
|
|
473
491
|
// Check for meaningful changes in each package
|
|
474
492
|
for (const pkg of packages) {
|
|
475
|
-
if (fs.existsSync(path.join(
|
|
493
|
+
if (fs.existsSync(path.join(getWorkspaceRoot(), pkg.path))) {
|
|
476
494
|
if (hasMeaningfulChangesForBuild(pkg.path, pkg.name)) {
|
|
477
495
|
packagesToBuild.push(pkg);
|
|
478
496
|
console.log(chalk.blue(`\n📦 ${pkg.name} has changes, will be built`));
|
|
@@ -552,7 +570,7 @@ async function publishPackages() {
|
|
|
552
570
|
|
|
553
571
|
// Check for meaningful changes in each package
|
|
554
572
|
for (const pkg of packages) {
|
|
555
|
-
if (fs.existsSync(path.join(
|
|
573
|
+
if (fs.existsSync(path.join(getWorkspaceRoot(), pkg.path))) {
|
|
556
574
|
if (hasMeaningfulChangesForPublish(pkg.path, pkg.name)) {
|
|
557
575
|
packagesToBuild.push(pkg);
|
|
558
576
|
console.log(chalk.blue(`\n📦 ${pkg.name} has changes, will be built`));
|
|
@@ -569,17 +587,15 @@ async function publishPackages() {
|
|
|
569
587
|
return;
|
|
570
588
|
}
|
|
571
589
|
|
|
572
|
-
// Build packages that have changes
|
|
573
590
|
for (const pkg of packagesToBuild) {
|
|
574
|
-
buildPackage(pkg);
|
|
575
|
-
// Save the hash after successful build
|
|
591
|
+
await buildPackage(pkg);
|
|
576
592
|
savePackageHashForPublish(pkg.path, pkg.name);
|
|
577
593
|
}
|
|
578
|
-
|
|
594
|
+
|
|
579
595
|
console.log(chalk.green(`\n🎉 ${packagesToBuild.length} package(s) built successfully!`));
|
|
580
596
|
return;
|
|
581
597
|
}
|
|
582
|
-
|
|
598
|
+
|
|
583
599
|
if (action === 'publish-one') {
|
|
584
600
|
const { selectedPackage } = await inquirer.prompt([
|
|
585
601
|
{
|
|
@@ -706,7 +722,7 @@ async function publishPackages() {
|
|
|
706
722
|
|
|
707
723
|
// Check for meaningful changes in each package
|
|
708
724
|
for (const pkg of packages) {
|
|
709
|
-
if (!fs.existsSync(path.join(
|
|
725
|
+
if (!fs.existsSync(path.join(getWorkspaceRoot(), pkg.path))) {
|
|
710
726
|
console.log(chalk.yellow(`⚠️ Package ${pkg.name} directory not found, skipping...`));
|
|
711
727
|
continue;
|
|
712
728
|
}
|
|
@@ -845,7 +861,7 @@ async function publishPackages() {
|
|
|
845
861
|
|
|
846
862
|
// Check for meaningful changes in each package
|
|
847
863
|
for (const pkg of packages) {
|
|
848
|
-
if (!fs.existsSync(path.join(
|
|
864
|
+
if (!fs.existsSync(path.join(getWorkspaceRoot(), pkg.path))) {
|
|
849
865
|
console.log(chalk.yellow(`⚠️ Package ${pkg.name} directory not found, skipping...`));
|
|
850
866
|
continue;
|
|
851
867
|
}
|