{"_id":"@azsxdc12356/react-native-template-multi-country","_rev":"4-11f6870eeda707cb7a394d84a61a11dc","name":"@azsxdc12356/react-native-template-multi-country","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@azsxdc12356/react-native-template-multi-country","version":"1.0.0","keywords":["react-native","template","multi-country","flavor","anti-association"],"author":{"name":"zjj"},"license":"MIT","_id":"@azsxdc12356/react-native-template-multi-country@1.0.0","maintainers":[{"name":"azsxdc12356","email":"527759787@qq.com"}],"homepage":"https://github.com/junjie-z666/react-native-template-multi-country#readme","bugs":{"url":"https://github.com/junjie-z666/react-native-template-multi-country/issues"},"dist":{"shasum":"5e66d320e854592defc4921ce19094b299bd0634","tarball":"https://registry.npmjs.org/@azsxdc12356/react-native-template-multi-country/-/react-native-template-multi-country-1.0.0.tgz","fileCount":62,"integrity":"sha512-U0bUDUorqXdjTUMr8YSSlQWPW2HvYiuG8p6OIvCB1qlyRjgGMhy3idb8d/keMPUVJ9nkI93Fvdy9VAyuijl9Vw==","signatures":[{"sig":"MEQCIDRQYEXhq+CEBsysuu3pgvg0aclwd7jEZ/G7vpvMXOraAiBgCR/orFRxo7f0kAEGnHX6n+qMFhObiAQUIpW/sLw3zA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":547560},"gitHead":"fca8c5c7b58db6a06f292bc3a1364aaae51439d5","_npmUser":{"name":"azsxdc12356","email":"527759787@qq.com"},"repository":{"url":"git+https://github.com/junjie-z666/react-native-template-multi-country.git","type":"git"},"_npmVersion":"10.1.0","description":"React Native template for multi-country deployment with anti-association architecture","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/react-native-template-multi-country_1.0.0_1780148313356_0.7612903340168868","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@azsxdc12356/react-native-template-multi-country","version":"1.0.1","keywords":["react-native","template","multi-country","flavor","anti-association"],"author":{"name":"zjj"},"license":"MIT","_id":"@azsxdc12356/react-native-template-multi-country@1.0.1","maintainers":[{"name":"azsxdc12356","email":"527759787@qq.com"}],"homepage":"https://github.com/junjie-z666/react-native-template-multi-country#readme","bugs":{"url":"https://github.com/junjie-z666/react-native-template-multi-country/issues"},"dist":{"shasum":"deecc8526f0054c833ba4ddc65fa04d41e629255","tarball":"https://registry.npmjs.org/@azsxdc12356/react-native-template-multi-country/-/react-native-template-multi-country-1.0.1.tgz","fileCount":63,"integrity":"sha512-meE0wwra44v9PGiCJHfO1D2D/vDymNu+eKpQ2/Nk2oJIuydZcnDMDc4HDOpyXJ4sSsF+SJrxMKSHsdYKfvOkSQ==","signatures":[{"sig":"MEYCIQCpn24+s4mUu7lDPN0sUx6bA9vX7LZQaC4Qtxaz8938MgIhAMiHLQD4Rc0bahlPphfwuiTNifmEbHBvn8Ozte5/OTNt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":549218},"gitHead":"0bb96a203d9d319b40d936f689f1d76bdd5c75b9","_npmUser":{"name":"azsxdc12356","email":"527759787@qq.com"},"repository":{"url":"git+https://github.com/junjie-z666/react-native-template-multi-country.git","type":"git"},"_npmVersion":"10.1.0","description":"React Native template for multi-country deployment with anti-association architecture","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/react-native-template-multi-country_1.0.1_1780160148088_0.3532782926478051","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@azsxdc12356/react-native-template-multi-country","version":"1.0.2","keywords":["react-native","template","multi-country","flavor","anti-association"],"author":{"name":"zjj"},"license":"MIT","_id":"@azsxdc12356/react-native-template-multi-country@1.0.2","maintainers":[{"name":"azsxdc12356","email":"527759787@qq.com"}],"homepage":"https://github.com/junjie-z666/react-native-template-multi-country#readme","bugs":{"url":"https://github.com/junjie-z666/react-native-template-multi-country/issues"},"dist":{"shasum":"e9fce8439424a072481d807f87803f87770ba8e2","tarball":"https://registry.npmjs.org/@azsxdc12356/react-native-template-multi-country/-/react-native-template-multi-country-1.0.2.tgz","fileCount":63,"integrity":"sha512-Cs1+C+9p9v4XV9eNXWXV6FMUhnJBCGR4SvndqPiIB/p9om/WSn82kTL0h9U/n/XoA/6CBeNO/vBhCggt6bDwDQ==","signatures":[{"sig":"MEQCIASVQCltt6bSUS7rqtaJDSMrZO2yUgbd245v9E3j4WpZAiAhj4AONHSf633zLkV7nYeVZPbR3o28H80Iz1pTO5pTaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":549351},"gitHead":"8a301805bec54ae9f8cb61f23d156e5a36040bfe","_npmUser":{"name":"azsxdc12356","email":"527759787@qq.com"},"repository":{"url":"git+https://github.com/junjie-z666/react-native-template-multi-country.git","type":"git"},"_npmVersion":"10.1.0","description":"React Native template for multi-country deployment with anti-association architecture","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/react-native-template-multi-country_1.0.2_1780669394728_0.760385208534234","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@azsxdc12356/react-native-template-multi-country","version":"1.0.3","description":"React Native template for multi-country deployment with anti-association architecture","keywords":["react-native","template","multi-country","flavor","anti-association"],"repository":{"type":"git","url":"git+https://github.com/junjie-z666/react-native-template-multi-country.git"},"bugs":{"url":"https://github.com/junjie-z666/react-native-template-multi-country/issues"},"homepage":"https://github.com/junjie-z666/react-native-template-multi-country#readme","author":{"name":"zjj"},"license":"MIT","_id":"@azsxdc12356/react-native-template-multi-country@1.0.3","gitHead":"df0a2e41177790de940e3f3731e085eb1416f9d9","_nodeVersion":"22.14.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-OW1UCXFEhTxmem7a0NW97/TP6w5Qx8fQMBtWyrCd8p3Jt//DLu7GBR0ckT7+064MoJzERgAY9SPpYHtbkpB3iA==","shasum":"26ba3c7d7df03deb3f361665df5bc0e5e0529a51","tarball":"https://registry.npmjs.org/@azsxdc12356/react-native-template-multi-country/-/react-native-template-multi-country-1.0.3.tgz","fileCount":63,"unpackedSize":549865,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD1RhL6UY+MemJciGUjdjsz9pKfhhbXigAHjNJDdqiIGAIgdeuiIqBTtW3BmkFKcAm42kxDMnIhL+85YB84fdfHO2A="}]},"_npmUser":{"name":"azsxdc12356","email":"527759787@qq.com"},"directories":{},"maintainers":[{"name":"azsxdc12356","email":"527759787@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native-template-multi-country_1.0.3_1780766392106_0.020773843201137288"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-30T13:38:33.145Z","modified":"2026-06-06T17:19:52.436Z","1.0.0":"2026-05-30T13:38:33.538Z","1.0.1":"2026-05-30T16:55:48.262Z","1.0.2":"2026-06-05T14:23:14.986Z","1.0.3":"2026-06-06T17:19:52.311Z"},"bugs":{"url":"https://github.com/junjie-z666/react-native-template-multi-country/issues"},"author":{"name":"zjj"},"license":"MIT","homepage":"https://github.com/junjie-z666/react-native-template-multi-country#readme","keywords":["react-native","template","multi-country","flavor","anti-association"],"repository":{"type":"git","url":"git+https://github.com/junjie-z666/react-native-template-multi-country.git"},"description":"React Native template for multi-country deployment with anti-association architecture","maintainers":[{"name":"azsxdc12356","email":"527759787@qq.com"}],"readme":"# @azsxdc12356/react-native-template-multi-country\r\n\r\nReact Native 模板脚手架，用于构建多国家独立部署的 Android App。\r\n\r\n通过 Android product flavors + 独立 JS 入口，每个国家拥有独立的 applicationId、App 名称、图标和 JS bundle，起到防关联的效果。\r\n\r\n[架构说明](https://juejin.cn/post/7645209991487946758)\r\n\r\n## 核心特性\r\n\r\n- **防关联** — 每个国家的 applicationId以及内部的类可以完全无关\r\n- **构建时区分** — Gradle 单数据源驱动 product flavors 和 JS bundle 入口\r\n- **import 边界防护** — ESLint 自定义规则 + pre-commit hook\r\n- **一键添加/移除国家** — 脚手架脚本自动生成完整骨架\r\n## 安装\r\n\r\n```bash\r\nnpx react-native init MyApp --template @azsxdc12356/react-native-template-multi-country\r\n```\r\n\r\n## 快速开始\r\n\r\n```bash\r\ncd MyApp\r\nyarn install\r\nyarn init-country    # 交互式初始化：设置 Android 包名 + 添加首个国家\r\nyarn start\r\nnpx react-native run-android --variant <country>Debug\r\n```\r\n\r\n## 添加国家\r\n\r\n```bash\r\nyarn add-country\r\n```\r\n\r\n或手动：\r\n\r\n```bash\r\nnode scripts/add-country.js <country-code> <application-id> <activity-class-name> [app-name] [api-base-url] [default-locale] [--package com.xxx.xxx]\r\n```\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}