Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a332cb68f4 | ||
|
|
ffc9af3595 | ||
|
|
ea456ca75d | ||
|
|
100447b7d5 | ||
|
|
4fc8174c3f | ||
|
|
ffcf32376d | ||
|
|
9e7a6483bb | ||
|
|
44e7ad381c | ||
|
|
9da8429132 | ||
|
|
371438e4e2 | ||
|
|
3c0fb203c8 | ||
|
|
be099fa8ce | ||
|
|
ad5174f050 | ||
|
|
e55051bb09 | ||
|
|
da099611c2 | ||
|
|
6052e12972 | ||
|
|
5c7ed69e2b | ||
|
|
afb35e18bc | ||
|
|
0cb1761f5b | ||
|
|
e48a1e4354 | ||
|
|
d1cc0b9707 | ||
|
|
df0149ac5f | ||
|
|
10fac6c22f | ||
|
|
172b32155d | ||
|
|
2d7334d61e | ||
|
|
caae886d8f | ||
|
|
270f516448 | ||
|
|
8ed8b19828 | ||
|
|
c66f735c19 | ||
|
|
b2f6208cb4 | ||
|
|
3b10c51f74 | ||
|
|
8d885ab3f5 | ||
|
|
b937346ac2 | ||
|
|
cd047d58f0 | ||
|
|
6a8da82688 | ||
|
|
ac23b8ac83 | ||
|
|
987fe89238 | ||
|
|
5361316879 | ||
|
|
c11df248ab | ||
|
|
ec3a826edc | ||
|
|
a585faa237 | ||
|
|
919ebb922e | ||
|
|
57233a492b | ||
|
|
b8f4b89aca | ||
|
|
80e970bda8 | ||
|
|
dc432eea2d | ||
|
|
8c5248b2b3 | ||
|
|
11fa0420ed | ||
|
|
d885abb7ce | ||
|
|
fbe903ad81 | ||
|
|
eff79f6d54 | ||
|
|
d3f6c2e173 | ||
|
|
418f04b312 | ||
|
|
126df709d6 | ||
|
|
590b9f8326 | ||
|
|
7b686518ed | ||
|
|
491b0caf18 | ||
|
|
393523caa6 | ||
|
|
50f58b7023 | ||
|
|
19afb6b08a | ||
|
|
587a21df1e | ||
|
|
9f15bca7e9 | ||
|
|
0af9bb62de | ||
|
|
a9fcdbe72a | ||
|
|
7ce6851ea7 | ||
|
|
51a72a0641 | ||
|
|
e9b8569636 | ||
|
|
cb4fc02d4c | ||
|
|
30d3b114fb | ||
|
|
9bb1823d8e | ||
|
|
302409b2aa | ||
|
|
81d1c898df | ||
|
|
ecd2665a7c | ||
|
|
ea53a939b8 | ||
|
|
ef94173200 | ||
|
|
fe8abb8848 | ||
|
|
8e8013e835 | ||
|
|
b80fb5d42b | ||
|
|
59bf3c6fc3 | ||
|
|
3f295f24b9 | ||
|
|
166dd361d2 | ||
|
|
2139753b44 | ||
|
|
ea1c65e260 | ||
|
|
e4eca8679a | ||
|
|
79b0923763 |
No files matched your search
+1
-56
@@ -1,57 +1,2 @@
|
||||
# OSX
|
||||
#
|
||||
.DS_Store
|
||||
|
||||
# Xcode
|
||||
#
|
||||
build/
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata
|
||||
*.xccheckout
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
*.hmap
|
||||
*.ipa
|
||||
*.xcuserstate
|
||||
project.xcworkspace
|
||||
|
||||
# Android/IntelliJ
|
||||
#
|
||||
build/
|
||||
.idea
|
||||
.gradle
|
||||
local.properties
|
||||
*.iml
|
||||
|
||||
# Visual Studio Code
|
||||
#
|
||||
.vscode/
|
||||
|
||||
# node.js
|
||||
#
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
|
||||
# BUCK
|
||||
buck-out/
|
||||
\.buckd/
|
||||
*.keystore
|
||||
|
||||
# fastlane
|
||||
#
|
||||
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
|
||||
# screenshots whenever they are needed.
|
||||
# For more information about the recommended setup visit:
|
||||
# https://docs.fastlane.tools/best-practices/source-control/
|
||||
|
||||
*/fastlane/report.xml
|
||||
*/fastlane/Preview.html
|
||||
*/fastlane/screenshots
|
||||
.vscode/
|
||||
+3
-1
@@ -1,2 +1,4 @@
|
||||
.travis.yml
|
||||
setup/
|
||||
CODE_OF_CONDUCT.md
|
||||
CONTRIBUTING.md
|
||||
ISSUE_TEMPLATE.md
|
||||
+3
-1
@@ -1,7 +1,9 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "node"
|
||||
install: true
|
||||
cache:
|
||||
directories:
|
||||
- "node_modules"
|
||||
deploy:
|
||||
on:
|
||||
tags: true
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* Sample React Native App
|
||||
* https://github.com/facebook/react-native
|
||||
*
|
||||
* Generated with the TypeScript template
|
||||
* https://github.com/emin93/react-native-template-typescript
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
import React, {Component} from 'react';
|
||||
import {Platform, StyleSheet, Text, View} from 'react-native';
|
||||
|
||||
const instructions = Platform.select({
|
||||
ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu',
|
||||
android:
|
||||
'Double tap R on your keyboard to reload,\n' +
|
||||
'Shake or press menu button for dev menu',
|
||||
});
|
||||
|
||||
interface Props {}
|
||||
export default class App extends Component<Props> {
|
||||
render() {
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<Text style={styles.welcome}>Welcome to React Native!</Text>
|
||||
<Text style={styles.instructions}>To get started, edit App.tsx</Text>
|
||||
<Text style={styles.instructions}>{instructions}</Text>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
flex: 1,
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
backgroundColor: '#F5FCFF',
|
||||
},
|
||||
welcome: {
|
||||
fontSize: 20,
|
||||
textAlign: 'center',
|
||||
margin: 10,
|
||||
},
|
||||
instructions: {
|
||||
textAlign: 'center',
|
||||
color: '#333333',
|
||||
marginBottom: 5,
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,46 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project owner at emin@emin.ch. The project owner will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project owner is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/4/
|
||||
@@ -0,0 +1,21 @@
|
||||
# Contributing
|
||||
|
||||
Cool, I'm glad you decided to contribute to React Native Template TypeScript.
|
||||
|
||||
Don't worry, I won't bother you with thousands of rules. I want to make contributing to this project as easy and transparent as possible.
|
||||
|
||||
## Workflow
|
||||
|
||||
We use [GitHub Flow](https://guides.github.com/introduction/flow/), so all code changes happen through pull requests.
|
||||
|
||||
1. Fork the repository and create your branch from `master`.
|
||||
2. If you've changed the functionality, update the documentation.
|
||||
3. Issue that pull request! :tada:
|
||||
|
||||
## License
|
||||
|
||||
By contributing, you agree that your contributions will be licensed under the [MIT License](https://choosealicense.com/licenses/mit/).
|
||||
|
||||
## Code style
|
||||
|
||||
Currently there is no lint configuration, but you should try to stay consistent with the existing code.
|
||||
@@ -0,0 +1,15 @@
|
||||
## Expected results
|
||||
|
||||
What did you expect to happen?
|
||||
|
||||
## Observed results
|
||||
|
||||
What happened?
|
||||
|
||||
### Logs
|
||||
|
||||
Please add the log output here.
|
||||
|
||||
## Steps to reproduce
|
||||
|
||||
1.
|
||||
@@ -1,43 +1,60 @@
|
||||
# :space_invader: React Native Template TypeScript · [](https://www.npmjs.com/package/react-native-template-typescript) [](https://travis-ci.org/emin93/react-native-template-typescript)
|
||||
# :space_invader: React Native Template TypeScript · [](https://travis-ci.org/emin93/react-native-template-typescript)
|
||||
|
||||
Clean and minimalist React Native template for a quick start with TypeScript.
|
||||
|
||||
This template can be used with the React Native CLI, which means it doesn't mess with the platform specific files. Instead of including a lot of dependencies, my aim when creating this template was to provide a very easy and minimalist way to start your React Native project with TypeScript. Of course you can always include other dependencies as you need them.
|
||||
[](https://medium.com/@emin93/react-native-typescript-b965059109d3)
|
||||
|
||||
## :star: Features
|
||||
|
||||
- Seamlessly integrated into the React Native CLI! :sparkles:
|
||||
- Consistent with the default React Native template
|
||||
- Always latest dependencies :raised_hands:
|
||||
|
||||
## :arrow_forward: Quick Start
|
||||
|
||||
```
|
||||
react-native init MyApp --template typescript
|
||||
cd MyApp
|
||||
node setup.js
|
||||
```bash
|
||||
react-native init MyApp --template typescript && node MyApp/setup.js
|
||||
```
|
||||
|
||||
## :question: FAQ
|
||||
|
||||
### What is included in this template?
|
||||
### Why this template when React Native 0.57+ supports TypeScript out of the box?
|
||||
|
||||
Actually, when React Native 0.57 was announced, I planned to stop maintenance on this template. But after further evaluation, there's still quite a lot of manual work to do (add type definitions for React & React Native, create a `.tsconfig` for type checking, etc.) to properly set up a React Native 0.57+ TypeScript project. And that's where this template comes in and does that work for you. :raised_hands:
|
||||
|
||||
### What additional dependencies are included in this template?
|
||||
|
||||
- [TypeScript](https://github.com/Microsoft/TypeScript)
|
||||
- [React Native TypeScript transformer](https://github.com/ds300/react-native-typescript-transformer)
|
||||
- [Type definitions for React & React Native](https://github.com/DefinitelyTyped/DefinitelyTyped)
|
||||
- [TS Jest](https://github.com/kulshekhar/ts-jest)
|
||||
- [TSLint](https://github.com/palantir/tslint)
|
||||
- [TSLint React](https://github.com/palantir/tslint-react)
|
||||
- [ts-jest](https://github.com/kulshekhar/ts-jest)
|
||||
|
||||
This template always uses the latest versions of the dependencies at the time when the setup script (`node setup.js`) is being executed. This means you don't have to worry about old versions.
|
||||
This template always uses the latest versions of the dependencies at the time when the `react-native init` command is being executed. This means you don't have to worry about old versions.
|
||||
|
||||
Lots of :heart: and credits to the owners and maintainers of those packages.
|
||||
|
||||
### Why the setup script?
|
||||
|
||||
The React Native CLI supports automatic installation of production dependencies only. Since TypeScript and the other dependencies are dev dependencies, the setup script is being used to install those. It also takes care of obsolete files like the `.flowconfig` and the `setup.js` itself after the setup.
|
||||
It deletes obsolete files like the `.flowconfig` and the `setup.js` itself after the setup.
|
||||
|
||||
### How will this template affect the React Native CLI workflow?
|
||||
### How to do type checking?
|
||||
|
||||
The React Native CLI will do everything just as without a template and afterwards overwrite the files with the ones from this template. This means you don't have to worry about incompatibility issues with later React Native upgrades.
|
||||
`npm run tsc`
|
||||
|
||||
## :hearts: Contributing
|
||||
### Does debugging work?
|
||||
|
||||
Contributions are very welcome. Please try to stay consistent with the other files I've created.
|
||||
Yes it does.
|
||||
|
||||
[](https://medium.com/@emin93/react-native-typescript-b965059109d3)
|
||||
|
||||
## :globe_with_meridians: Links
|
||||
|
||||
- ["Using React Native with TypeScript just became simple" on Medium](https://medium.com/@emin93/react-native-typescript-b965059109d3)
|
||||
- ["24 tips for React Native you probably want to know" on Albert Gao's blog](http://albertgao.xyz/2018/05/30/24-tips-for-react-native-you-probably-want-to-know/#9-For-Typescript)
|
||||
- ["3 Easy Steps to Set Up React Native with TypeScript, Jest and Enzyme" on Medium by Jan Hesters](https://medium.com/@jan.hesters/3-easy-steps-to-set-up-react-native-with-typescript-jest-and-enzyme-592ca042262f)
|
||||
|
||||
## :computer: Contributing
|
||||
|
||||
Contributions are very welcome. Please check out the [contributing document](https://github.com/emin93/react-native-template-typescript/blob/master/CONTRIBUTING.md).
|
||||
|
||||
### Donations
|
||||
|
||||
|
||||
+11
-6
@@ -1,9 +1,14 @@
|
||||
import * as React from "react";
|
||||
import "react-native";
|
||||
import { create } from "react-test-renderer";
|
||||
/**
|
||||
* @format
|
||||
*/
|
||||
|
||||
import App from "../src/App";
|
||||
import 'react-native';
|
||||
import React from 'react';
|
||||
import App from '../App';
|
||||
|
||||
it("renders correctly", () => {
|
||||
const tree = create(<App exampleProp="helloWorld" />);
|
||||
// Note: test renderer must be required after react-native.
|
||||
import renderer from 'react-test-renderer';
|
||||
|
||||
it('renders correctly', () => {
|
||||
renderer.create(<App />);
|
||||
});
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
# OSX
|
||||
#
|
||||
.DS_Store
|
||||
|
||||
# Xcode
|
||||
#
|
||||
build/
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata
|
||||
*.xccheckout
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
*.hmap
|
||||
*.ipa
|
||||
*.xcuserstate
|
||||
project.xcworkspace
|
||||
|
||||
# Android/IntelliJ
|
||||
#
|
||||
build/
|
||||
.idea
|
||||
.gradle
|
||||
local.properties
|
||||
*.iml
|
||||
|
||||
# Visual Studio Code
|
||||
#
|
||||
.vscode/
|
||||
|
||||
# node.js
|
||||
#
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
|
||||
# BUCK
|
||||
buck-out/
|
||||
\.buckd/
|
||||
*.keystore
|
||||
|
||||
# fastlane
|
||||
#
|
||||
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
|
||||
# screenshots whenever they are needed.
|
||||
# For more information about the recommended setup visit:
|
||||
# https://docs.fastlane.tools/best-practices/source-control/
|
||||
|
||||
*/fastlane/report.xml
|
||||
*/fastlane/Preview.html
|
||||
*/fastlane/screenshots
|
||||
|
||||
# Bundle artifact
|
||||
*.jsbundle
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"react-native-setup-typescript": "*"
|
||||
}
|
||||
+8
-10
@@ -1,10 +1,8 @@
|
||||
[
|
||||
"typescript",
|
||||
"tslint",
|
||||
"tslint-react",
|
||||
"react-native-typescript-transformer",
|
||||
"ts-jest",
|
||||
"@types/react",
|
||||
"@types/react-native",
|
||||
"@types/jest"
|
||||
]
|
||||
{
|
||||
"@types/jest": "latest",
|
||||
"@types/react-native": "latest",
|
||||
"@types/react-test-renderer": "latest",
|
||||
"@types/react": "latest",
|
||||
"ts-jest": "latest",
|
||||
"typescript": "latest"
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
import { AppRegistry } from 'react-native';
|
||||
import App from './src/App';
|
||||
|
||||
AppRegistry.registerComponent('HelloWorld', () => App);
|
||||
@@ -1,15 +1,8 @@
|
||||
{
|
||||
"transform": {
|
||||
"^.+\\.tsx?$": "ts-jest"
|
||||
},
|
||||
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
|
||||
"moduleFileExtensions": [
|
||||
"ts",
|
||||
"tsx",
|
||||
"js",
|
||||
"jsx",
|
||||
"json",
|
||||
"node"
|
||||
],
|
||||
"modulePaths": ["<rootDir>"]
|
||||
"transform": {
|
||||
"^.+\\.tsx?$": "ts-jest"
|
||||
},
|
||||
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
|
||||
"moduleFileExtensions": ["ts", "tsx", "js", "jsx", "json", "node"],
|
||||
"modulePaths": ["<rootDir>"]
|
||||
}
|
||||
Generated
+1646
File diff suppressed because it is too large.
Load diff
+28
-24
@@ -1,26 +1,30 @@
|
||||
{
|
||||
"name": "react-native-template-typescript",
|
||||
"version": "0.0.1",
|
||||
"description": "Clean and minimalist React Native template for a quick start with TypeScript.",
|
||||
"scripts": {
|
||||
"prepublishOnly": "npm --no-git-tag-version version from-git"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/emin93/react-native-template-typescript.git"
|
||||
},
|
||||
"keywords": [
|
||||
"react-native",
|
||||
"typescript",
|
||||
"tslint",
|
||||
"jest",
|
||||
"template",
|
||||
"boilerplate"
|
||||
],
|
||||
"author": "Emin Khateeb <emin@emin.ch>",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/emin93/react-native-template-typescript/issues"
|
||||
},
|
||||
"homepage": "https://github.com/emin93/react-native-template-typescript#readme"
|
||||
"name": "react-native-template-typescript",
|
||||
"version": "0.0.1",
|
||||
"description": "Clean and minimalist React Native template for a quick start with TypeScript.",
|
||||
"scripts": {
|
||||
"test": "standard setup.js",
|
||||
"prepublishOnly": "npm --no-git-tag-version version $TRAVIS_TAG",
|
||||
"install": "node setup.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/emin93/react-native-template-typescript.git"
|
||||
},
|
||||
"keywords": [
|
||||
"react-native",
|
||||
"typescript",
|
||||
"jest",
|
||||
"template",
|
||||
"boilerplate"
|
||||
],
|
||||
"author": "Emin Khateeb <emin@emin.ch>",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/emin93/react-native-template-typescript/issues"
|
||||
},
|
||||
"homepage": "https://github.com/emin93/react-native-template-typescript#readme",
|
||||
"devDependencies": {
|
||||
"standard": "12.0.1"
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
module.exports = {
|
||||
getTransformModulePath() {
|
||||
return require.resolve('react-native-typescript-transformer');
|
||||
},
|
||||
getSourceExts() {
|
||||
return ['ts', 'tsx'];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
const packageJson = require('./package.json')
|
||||
const jestConfig = require('./jest.json')
|
||||
|
||||
if (!packageJson.jest) {
|
||||
process.exit()
|
||||
}
|
||||
|
||||
const deleteFile = fileName => fs.unlinkSync(path.join(__dirname, fileName))
|
||||
const writeFile = (fileName, data) => fs.writeFileSync(path.join(__dirname, fileName), data)
|
||||
|
||||
console.log('🔄 Setting up...')
|
||||
|
||||
packageJson.scripts.tsc = 'tsc'
|
||||
packageJson.jest = Object.assign(packageJson.jest, jestConfig)
|
||||
|
||||
writeFile('package.json', JSON.stringify(packageJson, null, 2))
|
||||
|
||||
deleteFile('.flowconfig')
|
||||
deleteFile('App.js')
|
||||
deleteFile('__tests__/App.js')
|
||||
deleteFile('jest.json')
|
||||
deleteFile('LICENSE')
|
||||
deleteFile('README.md')
|
||||
deleteFile('setup.js')
|
||||
|
||||
console.log(`✅ Setup completed!`)
|
||||
@@ -1,28 +0,0 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { execSync } = require('child_process');
|
||||
|
||||
const packageJson = require('../../package.json');
|
||||
const jestJson = require('../../jest.json');
|
||||
const devDependencies = require('../../devDependencies.json');
|
||||
|
||||
const deleteFile = (fileName) => fs.unlinkSync(path.join(process.cwd(), '../../', fileName));
|
||||
const writeFile = (fileName, data) => fs.writeFileSync(path.join(process.cwd(), '../../' fileName), data);
|
||||
|
||||
packageJson.scripts.start = `${packageJson.scripts.start} --config ../../../../rn-cli.config.js`;
|
||||
packageJson.scripts.lint = 'tslint -c tslint.json "src/**/*.{ts,tsx}"';
|
||||
packageJson.jest = Object.assign(packageJson.jest, jestJson);
|
||||
writeFile('package.json', JSON.stringify(packageJson, null, 2));
|
||||
|
||||
deleteFile('App.js');
|
||||
deleteFile('__tests__/App.js');
|
||||
deleteFile('.flowconfig');
|
||||
deleteFile('devDependencies.json');
|
||||
deleteFile('jest.json');
|
||||
deleteFile('README.md');
|
||||
deleteFile('LICENSE');
|
||||
|
||||
let commandsToExecute = `cd ../../ && npm i ${devDependencies.join(' ')} --save-dev --save-exact`;
|
||||
commandsToExecute += '&& npm uninstall react-native-setup-typescript --save'
|
||||
|
||||
execSync(commandsToExecute);
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"name": "react-native-setup-typescript",
|
||||
"version": "1.0.1",
|
||||
"description": "Do NOT use this as a standalone package. See: https://www.npmjs.com/package/react-native-template-typescript",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"install": "node index.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+ssh://git@github.com/emin93/react-native-template-typescript.git"
|
||||
},
|
||||
"author": "Emin Khateeb <emin@emin.ch>",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/emin93/react-native-template-typescript/issues"
|
||||
},
|
||||
"homepage": "https://github.com/emin93/react-native-template-typescript#readme"
|
||||
}
|
||||
-54
@@ -1,54 +0,0 @@
|
||||
import * as React from "react";
|
||||
import { Platform, StyleSheet, Text, View } from "react-native";
|
||||
|
||||
const instructions = Platform.select({
|
||||
android: "Double tap R on your keyboard to reload,\n" +
|
||||
"Shake or press menu button for dev menu",
|
||||
ios: "Press Cmd+R to reload,\n" +
|
||||
"Cmd+D or shake for dev menu",
|
||||
});
|
||||
|
||||
interface IProps {
|
||||
exampleProp: string;
|
||||
}
|
||||
|
||||
interface IState {
|
||||
exampleState: string;
|
||||
}
|
||||
|
||||
export default class App extends React.Component<IProps, IState> {
|
||||
public render() {
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<Text style={styles.welcome}>
|
||||
Welcome to React Native!
|
||||
</Text>
|
||||
<Text style={styles.instructions}>
|
||||
To get started, edit src/App.tsx
|
||||
</Text>
|
||||
<Text style={styles.instructions}>
|
||||
{instructions}
|
||||
</Text>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
alignItems: "center",
|
||||
backgroundColor: "#F5FCFF",
|
||||
flex: 1,
|
||||
justifyContent: "center",
|
||||
},
|
||||
instructions: {
|
||||
color: "#333333",
|
||||
marginBottom: 5,
|
||||
textAlign: "center",
|
||||
},
|
||||
welcome: {
|
||||
fontSize: 20,
|
||||
margin: 10,
|
||||
textAlign: "center",
|
||||
},
|
||||
});
|
||||
+13
-9
@@ -1,11 +1,15 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es2015",
|
||||
"jsx": "react",
|
||||
"noEmit": true,
|
||||
"moduleResolution": "node",
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules"
|
||||
]
|
||||
"compilerOptions": {
|
||||
"allowJs": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"esModuleInterop": true,
|
||||
"isolatedModules": true,
|
||||
"jsx": "react",
|
||||
"lib": ["es6"],
|
||||
"moduleResolution": "node",
|
||||
"noEmit": true,
|
||||
"strict": true,
|
||||
"target": "esnext"
|
||||
},
|
||||
"exclude": ["node_modules", "babel.config.js"]
|
||||
}
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"defaultSeverity": "error",
|
||||
"extends": [
|
||||
"tslint:recommended",
|
||||
"tslint-react"
|
||||
],
|
||||
"jsRules": {},
|
||||
"rules": {},
|
||||
"rulesDirectory": []
|
||||
}
|
||||
Reference in new issue
Block a user