├── .gitignore ├── README.md ├── index.js ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | coverage 2 | node_modules 3 | npm-debug.log 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react-native-svg-web 2 | [![npm version](https://badge.fury.io/js/react-native-svg-web.svg)](http://badge.fury.io/js/react-native-svg-web) 3 | [![downloads](http://img.shields.io/npm/dm/react-native-svg-web.svg)](https://www.npmjs.com/package/react-native-svg-web) 4 | 5 | This package can be used as a drop-in replacement for [react-native-svg](https://github.com/react-native-community/react-native-svg) when targeting the web, or as a mock for [jest](https://github.com/facebook/jest) when testing react-native applications. 6 | 7 | ### Targeting the Web 8 | 9 | Add the following to your webpack configuration: 10 | 11 | ``` javascript 12 | module.exports = { 13 | ..., /* the existing configuration */ 14 | 15 | resolve: { 16 | alias: { 17 | 'react-native-svg': 'react-native-svg-web' 18 | } 19 | } 20 | }; 21 | ``` 22 | 23 | ### Mocking with Jest 24 | 25 | Add the following to your `package.json`. 26 | 27 | ``` json 28 | { 29 | "jest": { 30 | "setupFiles": [ 31 | "./jest/mocks/react-native-svg.js" 32 | ] 33 | } 34 | }; 35 | ``` 36 | 37 | And then create a file `./jest/mocks/react-native-svg.js`: 38 | 39 | ``` javascript 40 | jest.mock('react-native-svg', () => require('react-native-svg-web')); 41 | ``` 42 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017 Chris Baker 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | * SOFTWARE. 21 | * 22 | */ 23 | import * as React from "react"; 24 | import * as ReactNativeWeb from "react-native-web"; 25 | import PropTypes from "prop-types"; 26 | 27 | const createReactElement = 28 | ReactNativeWeb.unstable_createElement || React.createElement; 29 | 30 | function createElement(name, type) { 31 | class CreateElement extends React.Component { 32 | render() { 33 | return createReactElement(type, this.props, this.props.children); 34 | } 35 | } 36 | 37 | CreateElement.displayName = name; 38 | 39 | CreateElement.propTypes = { 40 | children: PropTypes.node, 41 | }; 42 | 43 | CreateElement.defaultProps = { 44 | children: undefined, 45 | }; 46 | 47 | return CreateElement; 48 | } 49 | 50 | export const Svg = createElement("Svg", "svg"); 51 | 52 | export default Svg; 53 | Svg.Svg = Svg; // stay consistent with the old require based api 54 | 55 | export const Circle = createElement("Circle", "circle"); 56 | Svg.Circle = Circle; 57 | 58 | export const ClipPath = createElement("ClipPath", "clipPath"); 59 | Svg.ClipPath = ClipPath; 60 | 61 | export const Defs = createElement("Defs", "defs"); 62 | Svg.Defs = Defs; 63 | 64 | export const Ellipse = createElement("Ellipse", "ellipse"); 65 | Svg.Ellipse = Ellipse; 66 | 67 | export const ForeignObject = createElement("ForeignObject", "foreignObject"); 68 | Svg.ForeignObject = ForeignObject; 69 | 70 | export const G = createElement("G", "g"); 71 | Svg.G = G; 72 | 73 | export const Image = createElement("Image", "image"); 74 | Svg.Image = Image; 75 | 76 | export const Line = createElement("Line", "line"); 77 | Svg.Line = Line; 78 | 79 | export const LinearGradient = createElement("LinearGradient", "linearGradient"); 80 | Svg.LinearGradient = LinearGradient; 81 | 82 | export const Marker = createElement("Marker", "marker"); 83 | Svg.Marker = Marker; 84 | 85 | export const Mask = createElement("Mask", "mask"); 86 | Svg.Mask = Mask; 87 | 88 | export const Path = createElement("Path", "path"); 89 | Svg.Path = Path; 90 | 91 | export const Pattern = createElement("Pattern", "pattern"); 92 | Svg.Pattern = Pattern; 93 | 94 | export const Polygon = createElement("Polygon", "polygon"); 95 | Svg.Polygon = Polygon; 96 | 97 | export const Polyline = createElement("Polyline", "polyline"); 98 | Svg.Polyline = Polyline; 99 | 100 | export const RadialGradient = createElement("RadialGradient", "radialGradient"); 101 | Svg.RadialGradient = RadialGradient; 102 | 103 | export const Rect = createElement("Rect", "rect"); 104 | Svg.Rect = Rect; 105 | 106 | export const Stop = createElement("Stop", "stop"); 107 | Svg.Stop = Stop; 108 | 109 | export const Symbol = createElement("Symbol", "symbol"); 110 | Svg.Symbol = Symbol; 111 | 112 | export const Text = createElement("Text", "text"); 113 | Svg.Text = Text; 114 | 115 | export const TextPath = createElement("TextPath", "textPath"); 116 | Svg.TextPath = TextPath; 117 | 118 | export const TSpan = createElement("TSpan", "tspan"); 119 | Svg.TSpan = TSpan; 120 | 121 | export const Use = createElement("Use", "use"); 122 | Svg.Use = Use; 123 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-svg-web", 3 | "version": "1.0.9", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "array-find-index": { 8 | "version": "1.0.2", 9 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", 10 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", 11 | "dev": true 12 | }, 13 | "asap": { 14 | "version": "2.0.6", 15 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 16 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", 17 | "dev": true 18 | }, 19 | "core-js": { 20 | "version": "1.2.7", 21 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", 22 | "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", 23 | "dev": true 24 | }, 25 | "create-react-class": { 26 | "version": "15.6.3", 27 | "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", 28 | "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", 29 | "dev": true, 30 | "requires": { 31 | "fbjs": "^0.8.9", 32 | "loose-envify": "^1.3.1", 33 | "object-assign": "^4.1.1" 34 | }, 35 | "dependencies": { 36 | "fbjs": { 37 | "version": "0.8.17", 38 | "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", 39 | "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", 40 | "dev": true, 41 | "requires": { 42 | "core-js": "^1.0.0", 43 | "isomorphic-fetch": "^2.1.1", 44 | "loose-envify": "^1.0.0", 45 | "object-assign": "^4.1.0", 46 | "promise": "^7.1.1", 47 | "setimmediate": "^1.0.5", 48 | "ua-parser-js": "^0.7.18" 49 | } 50 | } 51 | } 52 | }, 53 | "css-in-js-utils": { 54 | "version": "2.0.1", 55 | "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", 56 | "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", 57 | "dev": true, 58 | "requires": { 59 | "hyphenate-style-name": "^1.0.2", 60 | "isobject": "^3.0.1" 61 | } 62 | }, 63 | "debounce": { 64 | "version": "1.2.0", 65 | "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz", 66 | "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg==", 67 | "dev": true 68 | }, 69 | "deep-assign": { 70 | "version": "3.0.0", 71 | "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-3.0.0.tgz", 72 | "integrity": "sha512-YX2i9XjJ7h5q/aQ/IM9PEwEnDqETAIYbggmdDB3HLTlSgo1CxPsj6pvhPG68rq6SVE0+p+6Ywsm5fTYNrYtBWw==", 73 | "dev": true, 74 | "requires": { 75 | "is-obj": "^1.0.0" 76 | } 77 | }, 78 | "encoding": { 79 | "version": "0.1.12", 80 | "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", 81 | "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", 82 | "dev": true, 83 | "requires": { 84 | "iconv-lite": "~0.4.13" 85 | } 86 | }, 87 | "fbjs": { 88 | "version": "1.0.0", 89 | "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", 90 | "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", 91 | "dev": true, 92 | "requires": { 93 | "core-js": "^2.4.1", 94 | "fbjs-css-vars": "^1.0.0", 95 | "isomorphic-fetch": "^2.1.1", 96 | "loose-envify": "^1.0.0", 97 | "object-assign": "^4.1.0", 98 | "promise": "^7.1.1", 99 | "setimmediate": "^1.0.5", 100 | "ua-parser-js": "^0.7.18" 101 | }, 102 | "dependencies": { 103 | "core-js": { 104 | "version": "2.6.11", 105 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", 106 | "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", 107 | "dev": true 108 | } 109 | } 110 | }, 111 | "fbjs-css-vars": { 112 | "version": "1.0.2", 113 | "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", 114 | "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", 115 | "dev": true 116 | }, 117 | "hyphenate-style-name": { 118 | "version": "1.0.3", 119 | "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz", 120 | "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==", 121 | "dev": true 122 | }, 123 | "iconv-lite": { 124 | "version": "0.4.24", 125 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 126 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 127 | "dev": true, 128 | "requires": { 129 | "safer-buffer": ">= 2.1.2 < 3" 130 | } 131 | }, 132 | "inline-style-prefixer": { 133 | "version": "5.1.2", 134 | "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-5.1.2.tgz", 135 | "integrity": "sha512-PYUF+94gDfhy+LsQxM0g3d6Hge4l1pAqOSOiZuHWzMvQEGsbRQ/ck2WioLqrY2ZkHyPgVUXxn+hrkF7D6QUGbA==", 136 | "dev": true, 137 | "requires": { 138 | "css-in-js-utils": "^2.0.0" 139 | } 140 | }, 141 | "is-obj": { 142 | "version": "1.0.1", 143 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 144 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", 145 | "dev": true 146 | }, 147 | "is-stream": { 148 | "version": "1.1.0", 149 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 150 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 151 | "dev": true 152 | }, 153 | "isobject": { 154 | "version": "3.0.1", 155 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 156 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 157 | "dev": true 158 | }, 159 | "isomorphic-fetch": { 160 | "version": "2.2.1", 161 | "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", 162 | "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", 163 | "dev": true, 164 | "requires": { 165 | "node-fetch": "^1.0.1", 166 | "whatwg-fetch": ">=0.10.0" 167 | } 168 | }, 169 | "js-tokens": { 170 | "version": "4.0.0", 171 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 172 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 173 | "dev": true 174 | }, 175 | "loose-envify": { 176 | "version": "1.4.0", 177 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 178 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 179 | "dev": true, 180 | "requires": { 181 | "js-tokens": "^3.0.0 || ^4.0.0" 182 | } 183 | }, 184 | "node-fetch": { 185 | "version": "1.7.3", 186 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", 187 | "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", 188 | "dev": true, 189 | "requires": { 190 | "encoding": "^0.1.11", 191 | "is-stream": "^1.0.1" 192 | } 193 | }, 194 | "normalize-css-color": { 195 | "version": "1.0.2", 196 | "resolved": "https://registry.npmjs.org/normalize-css-color/-/normalize-css-color-1.0.2.tgz", 197 | "integrity": "sha1-Apkel8zOxmI/5XOvu/Deah8+n40=", 198 | "dev": true 199 | }, 200 | "object-assign": { 201 | "version": "4.1.1", 202 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 203 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 204 | "dev": true 205 | }, 206 | "promise": { 207 | "version": "7.3.1", 208 | "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", 209 | "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", 210 | "dev": true, 211 | "requires": { 212 | "asap": "~2.0.3" 213 | } 214 | }, 215 | "prop-types": { 216 | "version": "15.7.2", 217 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", 218 | "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", 219 | "dev": true, 220 | "requires": { 221 | "loose-envify": "^1.4.0", 222 | "object-assign": "^4.1.1", 223 | "react-is": "^16.8.1" 224 | } 225 | }, 226 | "react": { 227 | "version": "16.13.1", 228 | "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", 229 | "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", 230 | "dev": true, 231 | "requires": { 232 | "loose-envify": "^1.1.0", 233 | "object-assign": "^4.1.1", 234 | "prop-types": "^15.6.2" 235 | } 236 | }, 237 | "react-dom": { 238 | "version": "16.13.1", 239 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", 240 | "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", 241 | "dev": true, 242 | "requires": { 243 | "loose-envify": "^1.1.0", 244 | "object-assign": "^4.1.1", 245 | "prop-types": "^15.6.2", 246 | "scheduler": "^0.19.1" 247 | } 248 | }, 249 | "react-is": { 250 | "version": "16.13.1", 251 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 252 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", 253 | "dev": true 254 | }, 255 | "react-native-web": { 256 | "version": "0.12.2", 257 | "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.12.2.tgz", 258 | "integrity": "sha512-0YLDjwIm5LjQDOPUUregtuEBexH7oQph6x9FSAyzCM52QmM82TfrYRXXSwzI2eSdT1OzM2BTfP3zxmEL+coyhg==", 259 | "dev": true, 260 | "requires": { 261 | "array-find-index": "^1.0.2", 262 | "create-react-class": "^15.6.2", 263 | "debounce": "^1.2.0", 264 | "deep-assign": "^3.0.0", 265 | "fbjs": "^1.0.0", 266 | "hyphenate-style-name": "^1.0.3", 267 | "inline-style-prefixer": "^5.1.0", 268 | "normalize-css-color": "^1.0.2", 269 | "prop-types": "^15.6.0", 270 | "react-timer-mixin": "^0.13.4" 271 | } 272 | }, 273 | "react-timer-mixin": { 274 | "version": "0.13.4", 275 | "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.4.tgz", 276 | "integrity": "sha512-4+ow23tp/Tv7hBM5Az5/Be/eKKF7DIvJ09voz5LyHGQaqqz9WV8YMs31eFvcYQs7d451LSg7kDJV70XYN/Ug/Q==", 277 | "dev": true 278 | }, 279 | "safer-buffer": { 280 | "version": "2.1.2", 281 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 282 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 283 | "dev": true 284 | }, 285 | "scheduler": { 286 | "version": "0.19.1", 287 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", 288 | "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", 289 | "dev": true, 290 | "requires": { 291 | "loose-envify": "^1.1.0", 292 | "object-assign": "^4.1.1" 293 | } 294 | }, 295 | "setimmediate": { 296 | "version": "1.0.5", 297 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 298 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 299 | "dev": true 300 | }, 301 | "ua-parser-js": { 302 | "version": "0.7.21", 303 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", 304 | "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==", 305 | "dev": true 306 | }, 307 | "whatwg-fetch": { 308 | "version": "3.0.0", 309 | "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", 310 | "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==", 311 | "dev": true 312 | } 313 | } 314 | } 315 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-svg-web", 3 | "version": "1.0.9", 4 | "description": "A web replacement for react-native-svg", 5 | "main": "index.js", 6 | "author": "Chris Baker ", 7 | "license": "MIT", 8 | "homepage": "https://github.com/bakerface/react-native-svg-web#readme", 9 | "keywords": [ 10 | "react", 11 | "native", 12 | "svg", 13 | "web" 14 | ], 15 | "repository": { 16 | "type": "git", 17 | "url": "git+https://github.com/bakerface/react-native-svg-web.git" 18 | }, 19 | "bugs": { 20 | "url": "https://github.com/bakerface/react-native-svg-web/issues" 21 | }, 22 | "peerDependencies": { 23 | "prop-types": "*", 24 | "react": "*", 25 | "react-native-web": ">= 0.10.1" 26 | }, 27 | "devDependencies": { 28 | "prop-types": "^15.7.2", 29 | "react": "^16.13.1", 30 | "react-dom": "^16.13.1", 31 | "react-native-web": "^0.12.2" 32 | } 33 | } 34 | --------------------------------------------------------------------------------