{"_id":"@caidix/taro-loader-component-inject","_rev":"3-c5184f4d9d087d8d416a6a526dc72c8a","name":"@caidix/taro-loader-component-inject","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"@caidix/taro-loader-component-inject","version":"0.0.1","description":"基于taro3+react+webpack5注入小程序组件到全局/指定页面","main":"index.js","scripts":{"build":"pnpm run clean && tsc","dev":"tsc -w","prod":"tsc","version:pre":"pnpm run build && echo '发布预发布beta版本' && standard-version --prerelease","version:patch":"pnpm run build && echo '发布补丁版本' && standard-version --release-as patch","version:minor":"pnpm run build && echo '发布小版本' && standard-version --release-as minor","version:major":"pnpm run build && echo '发布主版本' && standard-version --release-as major","clean":"rimraf dist"},"repository":{"type":"git","url":"git+https://github.com/caidix/taro-inject-components.git"},"keywords":["webpack","loader","typescript","react","webpack","taro3","taro"],"author":{"name":"caidix"},"license":"MIT","homepage":"https://github.com/caidix/taro-inject-components#readme","dependencies":{"@babel/core":"^7.8.0","@babel/generator":"7.23.0","@babel/parser":"7.23.0","@babel/template":"^7.22.15","@babel/traverse":"7.23.0","@babel/types":"7.23.0","loader-utils":"1.4.2","minimatch":"^9.0.3","schema-utils":"^4.2.0"},"devDependencies":{"@types/babel__generator":"^7.6.8","@types/babel__parser":"^7.1.1","@types/babel__traverse":"^7.20.5","@types/node":"^20.11.13","standard-version":"^9.5.0","typescript":"^5.3.3"},"peerDependencies":{"@tarojs/helper":">=3.6.0","webpack":">=5.50.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"gitHead":"e53538fbc17397a9c6692650b541fbfdb7332527","bugs":{"url":"https://github.com/caidix/taro-inject-components/issues"},"_id":"@caidix/taro-loader-component-inject@0.0.1","_nodeVersion":"18.16.1","_npmVersion":"9.5.1","dist":{"integrity":"sha512-o7KOCV4bQJkCQ0oR4grkOImLGZFOjCjC6rWSAl/oUjN8UACnwgpCxYnX68pLzOX9mrHgvS27MRXj3WVOdyEItA==","shasum":"47843f868779e63638ae6f0c493b4953f8446470","tarball":"https://registry.npmjs.org/@caidix/taro-loader-component-inject/-/taro-loader-component-inject-0.0.1.tgz","fileCount":30,"unpackedSize":78546,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6rji2RXSPo7pLOv1AUR56P7MKYi/hlpJO2Da0YT+/PgIhAKXiI3bXnOIu+Yrtpv5ObkTfY5hzXy8SrQmTLSX9IBcd"}]},"_npmUser":{"name":"caidix","email":"380141132@qq.com"},"directories":{},"maintainers":[{"name":"caidix","email":"380141132@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/taro-loader-component-inject_0.0.1_1709198072694_0.06419669710048725"},"_hasShrinkwrap":false},"0.0.2":{"name":"@caidix/taro-loader-component-inject","version":"0.0.2","description":"基于taro3+react+webpack5注入小程序组件到全局/指定页面","main":"index.js","scripts":{"build":"pnpm run clean && tsc","dev":"tsc -w","prod":"tsc","version:pre":"pnpm run build && echo '发布预发布beta版本' && standard-version --prerelease","version:patch":"pnpm run build && echo '发布补丁版本' && standard-version --release-as patch","version:minor":"pnpm run build && echo '发布小版本' && standard-version --release-as minor","version:major":"pnpm run build && echo '发布主版本' && standard-version --release-as major","clean":"rimraf dist"},"repository":{"type":"git","url":"git+https://github.com/caidix/taro-inject-components.git"},"keywords":["webpack","loader","typescript","react","webpack","taro3","taro"],"author":{"name":"caidix"},"license":"MIT","homepage":"https://github.com/caidix/taro-inject-components#readme","dependencies":{"@babel/core":"^7.8.0","@babel/generator":"7.23.0","@babel/parser":"7.23.0","@babel/template":"^7.22.15","@babel/traverse":"7.23.0","@babel/types":"7.23.0","loader-utils":"1.4.2","minimatch":"^9.0.3","schema-utils":"^4.2.0"},"devDependencies":{"@types/babel__generator":"^7.6.8","@types/babel__parser":"^7.1.1","@types/babel__traverse":"^7.20.5","@types/node":"^20.11.13","standard-version":"^9.5.0","typescript":"^5.3.3"},"peerDependencies":{"@tarojs/helper":">=3.6.0","webpack":">=5.50.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"gitHead":"26ba76a573946c4c1ab76f326b5bc3acbad6c4c6","bugs":{"url":"https://github.com/caidix/taro-inject-components/issues"},"_id":"@caidix/taro-loader-component-inject@0.0.2","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-9gE4Pwf4UqyremyM4HVa3YagjJqWwgPksVR4J2TaaI5mdgOgZjnchw25hoaHqvCvL2zylnbjyLMLPFLrMALmYQ==","shasum":"2f152636a4694942a70fa747d6eba52cf55a6a35","tarball":"https://registry.npmjs.org/@caidix/taro-loader-component-inject/-/taro-loader-component-inject-0.0.2.tgz","fileCount":31,"unpackedSize":78806,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBo3m0VLPgVODXrqfme8seidVnxlS0ryRED5tWnQzlzwIgP8v6LG4i0OfyOiKXDQEQqkgs8OoMsdqVdSxIFx6fTfM="}]},"_npmUser":{"name":"caidix","email":"380141132@qq.com"},"directories":{},"maintainers":[{"name":"caidix","email":"380141132@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/taro-loader-component-inject_0.0.2_1709513944717_0.05316795896505244"},"_hasShrinkwrap":false},"0.0.3":{"name":"@caidix/taro-loader-component-inject","version":"0.0.3","description":"基于taro3+react+webpack5注入小程序组件到全局/指定页面","main":"index.js","scripts":{"build":"pnpm run clean && tsc","dev":"tsc -w","prod":"tsc","version:pre":"pnpm run build && echo '发布预发布beta版本' && standard-version --prerelease","version:patch":"pnpm run build && echo '发布补丁版本' && standard-version --release-as patch","version:minor":"pnpm run build && echo '发布小版本' && standard-version --release-as minor","version:major":"pnpm run build && echo '发布主版本' && standard-version --release-as major","clean":"rimraf dist"},"repository":{"type":"git","url":"git+https://github.com/caidix/taro-inject-components.git"},"keywords":["webpack","loader","typescript","react","webpack","taro3","taro"],"author":{"name":"caidix"},"license":"MIT","homepage":"https://github.com/caidix/taro-inject-components#readme","dependencies":{"@babel/core":"^7.8.0","@babel/generator":"7.23.0","@babel/parser":"7.23.0","@babel/template":"^7.22.15","@babel/traverse":"7.23.0","@babel/types":"7.23.0","loader-utils":"1.4.2","minimatch":"^9.0.3","schema-utils":"^4.2.0"},"devDependencies":{"@types/babel__generator":"^7.6.8","@types/babel__parser":"^7.1.1","@types/babel__traverse":"^7.20.5","@types/node":"^20.11.13","standard-version":"^9.5.0","tsdx":"^0.14.1","typescript":"^5.3.3"},"peerDependencies":{"@tarojs/helper":">=3.6.0","webpack":">=5.50.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"gitHead":"da9613082d49be07b5e6353857358acfb60d2fbf","bugs":{"url":"https://github.com/caidix/taro-inject-components/issues"},"_id":"@caidix/taro-loader-component-inject@0.0.3","_nodeVersion":"18.16.1","_npmVersion":"9.5.1","dist":{"integrity":"sha512-v0Pjd9AScdU4w4MgAWcul0ouiFrVpflVHfaAIphHSBLsh6tXEQpHkbQv1932vG+sCKb+O1jPAfrU/Hl4/t+FAQ==","shasum":"5ad100738a7ff4079707156f0b687145051da602","tarball":"https://registry.npmjs.org/@caidix/taro-loader-component-inject/-/taro-loader-component-inject-0.0.3.tgz","fileCount":30,"unpackedSize":76704,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuaPiXD3tx/EOJP8POFWYpOPkIhW0KTRox6iuZ69YAcAIhAMDadJRP+8DswK9/XWg+TzFhDldXT3o4twubRY+7ZSYt"}]},"_npmUser":{"name":"caidix","email":"380141132@qq.com"},"directories":{},"maintainers":[{"name":"caidix","email":"380141132@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/taro-loader-component-inject_0.0.3_1710397768992_0.1886271746704946"},"_hasShrinkwrap":false},"0.1.0":{"name":"@caidix/taro-loader-component-inject","version":"0.1.0","description":"基于taro3+react+webpack5注入小程序组件到全局/指定页面","main":"index.js","scripts":{"build":"tsdx build --format cjs","dev":"tsdx watch --format cjs","test":"tsdx test","version:pre":"pnpm run build && echo '发布预发布beta版本' && standard-version --prerelease","version:patch":"pnpm run build && echo '发布补丁版本' && standard-version --release-as patch","version:minor":"pnpm run build && echo '发布小版本' && standard-version --release-as minor","version:major":"pnpm run build && echo '发布主版本' && standard-version --release-as major","clean":"rimraf dist"},"repository":{"type":"git","url":"git+https://github.com/caidix/taro-inject-components.git"},"keywords":["webpack","loader","typescript","react","webpack","taro3","taro"],"author":{"name":"caidix"},"license":"MIT","homepage":"https://github.com/caidix/taro-inject-components#readme","dependencies":{"@babel/core":"^7.8.0","@babel/generator":"7.23.0","@babel/parser":"7.23.0","@babel/template":"^7.22.15","@babel/traverse":"7.23.0","@babel/types":"7.23.0","loader-utils":"1.4.2","minimatch":"^9.0.3","schema-utils":"^4.2.0"},"devDependencies":{"@types/babel__generator":"^7.6.8","@types/babel__parser":"^7.1.1","@types/babel__traverse":"^7.20.5","@types/node":"^20.11.13","standard-version":"^9.5.0","tsdx":"^0.14.1","typescript":"^5.3.3"},"peerDependencies":{"@tarojs/helper":">=3.6.0","webpack":">=5.50.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"gitHead":"510442df7d451d545218656cc163c655acd9d706","bugs":{"url":"https://github.com/caidix/taro-inject-components/issues"},"_id":"@caidix/taro-loader-component-inject@0.1.0","_nodeVersion":"18.16.1","_npmVersion":"9.5.1","dist":{"integrity":"sha512-5gm0LXe9D+QC1G1y8QxuQzdLBCxvByuTxRqs0PPSmJNMzQM6sszKrHQGG/Fpf04T/CR3g0bMV0cNu4mdwV2sEg==","shasum":"c343a56559d1fc5985aad5a537c5099b55ae0ecb","tarball":"https://registry.npmjs.org/@caidix/taro-loader-component-inject/-/taro-loader-component-inject-0.1.0.tgz","fileCount":16,"unpackedSize":160528,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDxIRJnlx9joW0q9QfPY2NBIZRl5q0Vp2jN9tKNdql/2AiBQYj34BqSXOFWIhD6OVJ2Xe2OO1MnshDS562Oocyxeug=="}]},"_npmUser":{"name":"caidix","email":"380141132@qq.com"},"directories":{},"maintainers":[{"name":"caidix","email":"380141132@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/taro-loader-component-inject_0.1.0_1710409608611_0.8227353492849201"},"_hasShrinkwrap":false}},"time":{"created":"2024-02-29T09:14:32.595Z","0.0.1":"2024-02-29T09:14:32.867Z","modified":"2024-03-14T09:46:49.239Z","0.0.2":"2024-03-04T00:59:04.950Z","0.0.3":"2024-03-14T06:29:29.217Z","0.1.0":"2024-03-14T09:46:48.805Z"},"maintainers":[{"name":"caidix","email":"380141132@qq.com"}],"description":"基于taro3+react+webpack5注入小程序组件到全局/指定页面","homepage":"https://github.com/caidix/taro-inject-components#readme","keywords":["webpack","loader","typescript","react","webpack","taro3","taro"],"repository":{"type":"git","url":"git+https://github.com/caidix/taro-inject-components.git"},"author":{"name":"caidix"},"bugs":{"url":"https://github.com/caidix/taro-inject-components/issues"},"license":"MIT","readme":"# Taro3 全局组件注入插件\r\n\r\n## 全局注入插件\r\n\r\n> 全局注入插件用于为每个页面自动注入一些全局组件、方法。思路来源于前司小程序插件，于此基础之上完善更进以满足全局注入某些吐司、防控等业务需求。\r\n\r\n#### 安装\r\n\r\n> npm i @caidix/taro-loader-component-inject -D\r\n\r\n#### 使用前置条件\r\n\r\n1. Taro 3.6.0 以上版本， React18 开发方式\r\n2. 插件为 Webpack Loader，仅支持采用 Webpack 进行打包编译\r\n\r\n#### 添加配置\r\n\r\n```javascript\r\n// config/index.js\r\nconst config = {\r\n  // ...\r\n  mini: {\r\n    webpackChain(chain) {\r\n      chain.module\r\n        .rule(\"script\")\r\n        .test(/\\.[tj]sx?$/i)\r\n        .use(\"taro-loader-component-inject\")\r\n        .loader(\"@caidix/taro-loader-component-inject\")\r\n        .options({\r\n          // options\r\n          enable: true,\r\n          includesPages: [\"pages/index/index\"],\r\n        })\r\n        .end();\r\n    },\r\n  },\r\n  // ...\r\n};\r\n```\r\n\r\n#### 配置参数说明 options\r\n\r\n| 属性           | 说明                                                                                                                                 | 类型                          | 默认值 |\r\n| -------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------- | ------ |\r\n| enable         | 是否使用插件                                                                                                                         | boolean                       | false  |\r\n| componentsPath | 全局组件存放路径，当前默认前往 src/\\_inject                                                                                          | string                        |        |\r\n| includePages   | 全局范围下允许被注入的页面路由集合,要求书写方式与 router 中的路径相同或是 [Glob 匹配规则](https://www.npmjs.com/package/minimatch)   | Array<string>                 | ``     |\r\n| excludePages   | 全局范围下不允许被注入的页面路由集合,要求书写方式与 router 中的路径相同或是 [Glob 匹配规则](https://www.npmjs.com/package/minimatch) | Array<string>                 | ``     |\r\n| customValidate | 自定义处理需要被注入的页面, 传入一个函数，返回 true 时该页面被注入，反之不注入                                                       | (filePath: string) => boolean | ``     |\r\n\r\n#### 注入规则\r\n\r\n1. 插件将会追溯页面组件 `export default XX` 中默认导出的组件，找到其最外层的 return,为其注入相应的内容, 额外的，目前仅支持存在 if return 的形式：\r\n\r\n```javascript\r\n// inject Component\r\nimport InjectBaby from '../xxxx'\r\n\r\n// example\r\nconst Hello = () => {\r\nreturn <View>你是一只猪</View>\r\n}\r\n// injected\r\nconst Hello = () => {\r\nreturn <View><View>你是一只猪</View><InjectBaby /></View>\r\n}\r\n\r\n// example\r\nconst Hello = () => {\r\nconst i = 5;\r\nif (i > ?) {\r\nreturn <View>你不是一只猪</View>\r\n}\r\nreturn <View>你是一只猪</View>\r\n}\r\n// injected\r\nconst Hello = () => {\r\nconst i = 5;\r\nif (i > ?) {\r\nreturn <><View>你不是一只猪</View><InjectBaby /></>\r\n}\r\nreturn <><View>你是一只猪</View><InjectBaby /></>\r\n}\r\n\r\nexport default Hello;\r\n\r\n```\r\n\r\n2. 原则上你**不应该**主动在页面中引入全局注入组件。当你在页面中手动引入了 src/\\_inject（注入组件存放的文件夹） 内的组件，并且并未将该页面从配置中移除时，插件会匹配到你已手动引入从而取消注入。（该逻辑只针对页面组件，不针对自定义的小组件）\r\n\r\n## 全局注入组件规则\r\n\r\n> 需要全局注入的组件，需按规则写入目录： src/\\_inject 文件夹内。\r\n\r\n#### 创建步骤\r\n\r\n1.  src/\\_inject 文件夹中创建对应文件夹， 例如 global-toast\r\n\r\n2.  创建 index.tsx 及 config.json 或是 config.{env}.json 文件\r\n\r\n    - index.tsx / index.tt(weapp).tsx : 你要注入的组件入口文件，为默认导出 export default XX；\r\n    - config.{env}.json： config 文件为我们建立需要被注入的组件配置文件，不存在该配置文件时组件不会被注入。 当你指定 env 配置时，将会优先读取对应环境的配置。\r\n    - 当然，如果\\_inject 下的组件没有基础配置文件也没有{env}.json 配置文件会抛出错误，如果你想避免错误提示，请创建一个 config.json，并将 enable 属性设置为 false，再认真书写针对{env}.json 这类文件的配置。\r\n\r\n3.  当你的注入组件没有强定义环境时，插件会优先查看文件夹内是否存在该环境定义的文件去使用，例如当前为 weapp 环境，你的组件目录内存在 index.weapp.tsx 和 index.tsx 文件，插件会优先采用 index.weapp.tsx 文件\r\n\r\n#### 组件配置参数 config.json\r\n\r\n| 属性           | 说明                                                                                                                                                                               | 类型                                                           | 默认值               | 是否必填 |\r\n| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | -------------------- | -------- |\r\n| enable         | 是否使用该组件，只有填 true 才会被注入                                                                                                                                             | boolean                                                        | false                | 否       |\r\n| entry          | 被注入的组件的入口，按上面的创建步骤时需要填入: *entry:\"index.tsx\"*也可以填入*entry:\"index.weapp.tsx\"*当你的注入文件没有强定义环境时，插件会优先选择存在当前环境下的文件进行注入。 | string                                                         | `` | 是              |\r\n| tagName        | 注入时的组件名                                                                                                                                                                     | string                                                         | 不填默认为文件目录名 | 否       |\r\n| includePages   | 组件范围内允许被注入的页面路由集合,要求书写方式与 router 中的路径相同或是[Glob 匹配规则](https://www.npmjs.com/package/minimatch)                                                  | Array<string>                                                  | `` | 否              |\r\n| excludePages   | 组件范围内不允许被注入的页面路由集合,要求书写方式与 router 中的路径相同或是[Glob 匹配规则](https://www.npmjs.com/package/minimatch)                                                | Array<string>                                                  | `` | 否              |\r\n| injectEnv      | 组件允许被注入的环境，不写默认都注入，单个可以写字符串\"weapp\"，也可写数组[\"weapp\", \"qq\"]                                                                                           | `weapp` / `swan` / `alipay` / `tt` / `qq` / `jd` / `h5` / `rn` |                      | 否       |\r\n| injectPosition | 注入组件所处 jsx 的位置                                                                                                                                                            | `bottom`/`top`                                                 | `bottom`             | 否       |\r\n| customValidate | 自定义处理需要被注入的页面, 传入一个函数，返回 true 时该页面被注入，反之不注入                                                                                                     | (filePath: string) => boolean                                  | `bottom`             | 否       |\r\n","readmeFilename":"README.md"}