├── demo.gif ├── proptypes.sublime-snippet ├── defaultprops.sublime-snippet ├── method-render.sublime-snippet ├── redux-mapstatetoprops.sublime-snippet ├── redux-mapdispatchtoprops.sublime-snippet ├── style.sublime-snippet ├── apisauce.sublime-snippet ├── babel-modules-resolver.sublime-snippet ├── reactotron_config.sublime-snippet ├── component.sublime-snippet ├── stateless_component.sublime-snippet ├── redux_index.sublime-snippet ├── stateless_redux_component.sublime-snippet ├── redux_component.sublime-snippet ├── duck.sublime-snippet ├── eslint.sublime-snippet ├── redux_configure_store.sublime-snippet └── README.md /demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rocketseat/rocketnative-sublime-snippets/HEAD/demo.gif -------------------------------------------------------------------------------- /proptypes.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 8 | proptypes 9 | source.js,source.jsx 10 | Create component propTypes 11 | 12 | -------------------------------------------------------------------------------- /defaultprops.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 8 | defaultprops 9 | source.js,source.jsx 10 | Create component defaultProps 11 | 12 | -------------------------------------------------------------------------------- /method-render.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | } 6 | ); 7 | } 8 | 9 | ]]> 10 | render 11 | source.js,source.jsx 12 | Create render method 13 | 14 | -------------------------------------------------------------------------------- /redux-mapstatetoprops.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ({ 4 | ${1} 5 | }); 6 | 7 | ]]> 8 | mapStateToProps 9 | source.js,source.jsx 10 | Create redux mapStateToProps 11 | 12 | -------------------------------------------------------------------------------- /redux-mapdispatchtoprops.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ({ 4 | ${1} 5 | }); 6 | 7 | ]]> 8 | mapDispatchToProps 9 | source.js,source.jsx 10 | Create redux mapDispatchToProps 11 | 12 | -------------------------------------------------------------------------------- /style.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 12 | styles 13 | source.js,source.jsx 14 | Create react-native Style file 15 | 16 | -------------------------------------------------------------------------------- /apisauce.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 12 | apisauce 13 | source.js,source.jsx 14 | Create APISauce Config 15 | 16 | -------------------------------------------------------------------------------- /babel-modules-resolver.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 14 | moduleResolver 15 | source.babelrc,source.json 16 | Create Module Resolver config 17 | 18 | -------------------------------------------------------------------------------- /reactotron_config.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 17 | reactotronconfig 18 | source.js,source.jsx 19 | Create Reactotron Config 20 | 21 | -------------------------------------------------------------------------------- /component.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 15 | ); 16 | } 17 | } 18 | 19 | ]]> 20 | component 21 | source.js,source.jsx 22 | Create react-native component 23 | 24 | -------------------------------------------------------------------------------- /stateless_component.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ( 12 | 13 | ); 14 | 15 | export default ${1:${TM_FILENAME/(.+)\..+|.*/$1/:MyComponent}}; 16 | 17 | ]]> 18 | componentStateless 19 | source.js,source.jsx 20 | Create react-native stateless component 21 | 22 | -------------------------------------------------------------------------------- /redux_index.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | { 12 | const rootReducer = combineReducers({ 13 | // nav: navReducer, 14 | }); 15 | 16 | return configureStore(rootReducer, rootSaga); 17 | }; 18 | 19 | ]]> 20 | reduxSetup 21 | source.js,source.jsx 22 | Create Redux Setup file 23 | 24 | -------------------------------------------------------------------------------- /stateless_redux_component.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ( 15 | 16 | ); 17 | 18 | const mapStateToProps = state => ({ 19 | 20 | }); 21 | 22 | const mapDispatchToProps = dispatch => ({ 23 | 24 | }); 25 | 26 | export default connect(mapStateToProps, mapDispatchToProps)(${1:${TM_FILENAME/(.+)\..+|.*/$1/:MyComponent}}); 27 | 28 | ]]> 29 | reduxComponentStateless 30 | source.js,source.jsx 31 | Create react-native stateless Redux component 32 | 33 | -------------------------------------------------------------------------------- /redux_component.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 18 | ); 19 | } 20 | } 21 | 22 | const mapStateToProps = state => ({ 23 | 24 | }); 25 | 26 | const mapDispatchToProps = dispatch => ({ 27 | 28 | }); 29 | 30 | export default connect(mapStateToProps, mapDispatchToProps)(${1:${TM_FILENAME/(.+)\..+|.*/$1/:MyComponent}}); 31 | 32 | ]]> 33 | reduxComponent 34 | source.js,source.jsx 35 | Create react-native Redux component 36 | 37 | -------------------------------------------------------------------------------- /duck.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 24 | // state.merge({ data: [] }); 25 | 26 | /* Reducers to types */ 27 | 28 | export const reducer = createReducer(INITIAL_STATE, { 29 | // [Types.ACTION_TYPE]: reducer, 30 | }); 31 | 32 | ]]> 33 | duck 34 | source.js,source.jsx 35 | Create react-native duck module 36 | 37 | -------------------------------------------------------------------------------- /eslint.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 36 | eslint 37 | source.json 38 | Create eslint file config 39 | 40 | -------------------------------------------------------------------------------- /redux_configure_store.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | { 6 | const middleware = []; 7 | const enhancers = []; 8 | 9 | /* Saga */ 10 | // const sagaMonitor = __DEV__ ? console.tron.createSagaMonitor() : null; 11 | // const sagaMiddleware = createSagaMiddleware({ sagaMonitor }); 12 | // middleware.push(sagaMiddleware); 13 | 14 | enhancers.push(applyMiddleware(...middleware)); 15 | 16 | /* Store */ 17 | const createAppropriateStore = __DEV__ ? console.tron.createStore : createStore; 18 | const store = createAppropriateStore(rootReducer, compose(...enhancers)); 19 | 20 | /* Run Saga */ 21 | // sagaMiddleware.run(rootSaga); 22 | 23 | return store; 24 | }; 25 | 26 | ]]> 27 | configureStore 28 | source.js,source.jsx 29 | Create configureStore file 30 | 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |

DEPRECATED

5 |

6 | 🚨 Hey, this repository is DEPRECATED and will no longer be actively maintained! 7 |

8 |
9 | 10 | 11 |
12 |
13 |
14 |
15 |
16 | 17 | ## RocketNative Snippets 18 | 19 | React Native code snippets for Sublime Text 20 | 21 | ## Summary 22 | 23 | - [Installation](#installation) 24 | - [Usage](#usage) 25 | - [Component](#component) 26 | - [ESLint](#eslint) 27 | - [Redux](#redux) 28 | - [Reactotron](#reactotron) 29 | - [Babel](#babel) 30 | - [Apisauce](#apisauce) 31 | 32 | ![Demo](https://raw.githubusercontent.com/diego3g/rocketnative-sublime-snippets/master/demo.gif) 33 | 34 | ### Installation 35 | To install through [Package Control](http://wbond.net/sublime_packages/package_control), 36 | search for **RocketNative Snippets**. If you still don't have Package Control in Sublime Text, [go get it](http://wbond.net/sublime_packages/package_control/installation). 37 | It's pure awesomeness. 38 | 39 | ## Usage 40 | ### Component 41 | #### [component] - Create react-native component 42 | ```javascript 43 | /* Core */ 44 | import React, { Component } from 'react'; 45 | 46 | /* Presentational */ 47 | import { View } from 'react-native'; 48 | 49 | // import styles from './styles'; 50 | 51 | export default class MyComponent extends Component { 52 | render() { 53 | return ( 54 | 55 | ); 56 | } 57 | } 58 | ``` 59 | 60 | #### [proptypes] - Create component propTypes 61 | ```javascript 62 | static propTypes = { 63 | 64 | }; 65 | ``` 66 | 67 | #### [defaultprops] - Create component defaultProps 68 | ```javascript 69 | static defaultProps = { 70 | 71 | }; 72 | ``` 73 | 74 | #### [render] - Create render method 75 | ```javascript 76 | render() { 77 | return ( 78 | 79 | ); 80 | } 81 | ``` 82 | 83 | ### ESLint 84 | #### [eslint] - Create eslint file config 85 | ```json 86 | { 87 | "parser": "babel-eslint", 88 | "env": { 89 | "browser": true, 90 | "jest": true 91 | }, 92 | "plugins": [ 93 | "react-native", 94 | "jsx-a11y", 95 | "import" 96 | ], 97 | "extends": [ 98 | "airbnb", 99 | "plugin:react-native/all" 100 | ], 101 | "rules": { 102 | "react/jsx-filename-extension": ["error", { "extensions": [".js", ".jsx"] }], 103 | "global-require": "off", 104 | "no-console": "off", 105 | "import/prefer-default-export": "off", 106 | "no-unused-vars": ["error", {"argsIgnorePattern": "^_"}] 107 | }, 108 | "settings": { 109 | "import/resolver": { 110 | "babel-module": {} 111 | } 112 | }, 113 | "globals": { 114 | "__DEV__": true 115 | } 116 | } 117 | ``` 118 | 119 | ### Redux 120 | #### [reduxSetup] - Create Redux Setup file 121 | ```javascript 122 | import { combineReducers } from 'redux'; 123 | 124 | /* Reducers */ 125 | // import navReducer from 'navigation/reducer'; 126 | 127 | import configureStore from './configureStore'; 128 | // import rootSaga from './sagas'; 129 | 130 | export default () => { 131 | const rootReducer = combineReducers({ 132 | // nav: navReducer, 133 | }); 134 | 135 | return configureStore(rootReducer, rootSaga); 136 | }; 137 | ``` 138 | 139 | #### [configureStore] - Create configureStore file 140 | ```javascript 141 | import { createStore, applyMiddleware, compose } from 'redux'; 142 | 143 | export default (rootReducer) => { 144 | const middleware = []; 145 | const enhancers = []; 146 | 147 | /* Saga */ 148 | // const sagaMonitor = __DEV__ ? console.tron.createSagaMonitor() : null; 149 | // const sagaMiddleware = createSagaMiddleware({ sagaMonitor }); 150 | // middleware.push(sagaMiddleware); 151 | 152 | enhancers.push(applyMiddleware(...middleware)); 153 | 154 | /* Store */ 155 | const createAppropriateStore = __DEV__ ? console.tron.createStore : createStore; 156 | const store = createAppropriateStore(rootReducer, compose(...enhancers)); 157 | 158 | /* Run Saga */ 159 | // sagaMiddleware.run(rootSaga); 160 | 161 | return store; 162 | }; 163 | ``` 164 | 165 | #### [reduxComponent] - Create react-native Redux component 166 | ```javascript 167 | /* Core */ 168 | import React, { Component } from 'react'; 169 | 170 | /* Presentational */ 171 | import { View } from 'react-native'; 172 | 173 | /* Redux */ 174 | import { connect } from 'react-redux'; 175 | 176 | // import styles from './styles'; 177 | 178 | class extends Component { 179 | render() { 180 | return ( 181 | 182 | ); 183 | } 184 | } 185 | 186 | const mapStateToProps = state => ({ 187 | 188 | }); 189 | 190 | const mapDispatchToProps = dispatch => ({ 191 | 192 | }); 193 | 194 | export default connect(mapStateToProps, mapDispatchToProps)(); 195 | ``` 196 | 197 | #### [mapStateToProps] - Create redux mapStateToProps 198 | ```javascript 199 | const mapStateToProps = state => ({ 200 | 201 | }); 202 | ``` 203 | 204 | #### [mapDispatchToProps] - Create redux mapDispatchToProps 205 | ```javascript 206 | const mapDispatchToProps = dispatch => ({ 207 | 208 | }); 209 | ``` 210 | 211 | #### [duck] - Create react-native duck module 212 | ```javascript 213 | import { createReducer, createActions } from 'reduxsauce'; 214 | import Immutable from 'seamless-immutable'; 215 | 216 | /* Types & Action Creators */ 217 | 218 | const { Types, Creators } = createActions({ 219 | // actionType: ['dataPassed'], 220 | }); 221 | 222 | export const TesteTypes = Types; 223 | export default Creators; 224 | 225 | /* Initial State */ 226 | 227 | export const INITIAL_STATE = Immutable({ 228 | // data: [], 229 | }); 230 | 231 | /* Reducers */ 232 | 233 | // export const reducer = state => 234 | // state.merge({ data: [] }); 235 | 236 | /* Reducers to types */ 237 | 238 | export const reducer = createReducer(INITIAL_STATE, { 239 | // [Types.ACTION_TYPE]: reducer, 240 | }); 241 | ``` 242 | 243 | ### Reactotron 244 | #### [reactotronconfig] - Create Reactotron Config 245 | ```javascript 246 | import Reactotron from 'reactotron-react-native'; 247 | 248 | if (__DEV__) { 249 | const tron = Reactotron 250 | .configure() 251 | .useReactNative() 252 | .connect(); 253 | 254 | tron.clear(); 255 | 256 | console.tron = tron; 257 | } 258 | ``` 259 | 260 | ### Babel 261 | #### [moduleResolver] - Create Module Resolver config 262 | ```json 263 | "plugins": [ 264 | [ 265 | "module-resolver", 266 | { 267 | "root": ["./src"], 268 | "extensions": [".js", ".ios.js", ".android.js"] 269 | } 270 | ] 271 | ] 272 | ``` 273 | 274 | ### Apisauce 275 | #### [apisauce] - Create APISauce Config 276 | ```javascript 277 | import { create } from 'apisauce'; 278 | 279 | const api = create({ 280 | baseURL: 'http://localhost:3000', 281 | }); 282 | 283 | export default api; 284 | ``` 285 | --------------------------------------------------------------------------------