Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
98c6517801 | ||
|
|
9e832e69c6 | ||
|
|
93b8ef0173 | ||
|
|
604fce0372 | ||
|
|
56a7a57654 | ||
|
|
b009ff628d | ||
|
|
f770415db3 | ||
|
|
88a5fc6ad6 | ||
|
|
049943c7bd | ||
|
|
990f52d702 | ||
|
|
76e0acdb31 | ||
|
|
7947ef1d36 | ||
|
|
de9d3f0804 | ||
|
|
0ab55f4385 | ||
|
|
0b54ba54c6 | ||
|
|
9d2f745914 | ||
|
|
651d111624 | ||
|
|
cbe99e2b0f | ||
|
|
fdcc07aa80 | ||
|
|
2376f89dcc | ||
|
|
5706e87500 | ||
|
|
12ed73a490 | ||
|
|
5635eb9106 | ||
|
|
5a8cf6bbe6 | ||
|
|
8e588cf4b5 | ||
|
|
5ce07d7e6c | ||
|
|
33cc106144 | ||
|
|
add36b1f30 | ||
|
|
2c6b757051 | ||
|
|
65ac7f1bbf | ||
|
|
c9184ffc06 | ||
|
|
1bed694429 | ||
|
|
e2b4039a30 | ||
|
|
f8369603f4 | ||
|
|
2433c22b3d | ||
|
|
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 | ||
|
|
4c306c4fbf | ||
|
|
ee9d44e70d |
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/
|
||||
@@ -1 +1,4 @@
|
||||
.travis.yml
|
||||
CODE_OF_CONDUCT.md
|
||||
CONTRIBUTING.md
|
||||
ISSUE_TEMPLATE.md
|
||||
+13
-7
@@ -1,11 +1,17 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "node"
|
||||
install: true
|
||||
deploy:
|
||||
on:
|
||||
tags: true
|
||||
provider: npm
|
||||
email: "emin@emin.ch"
|
||||
api_key: "${NPM_TOKEN}"
|
||||
skip_cleanup: true
|
||||
- provider: npm
|
||||
on:
|
||||
condition: $TRAVIS_BRANCH == "master" && -n $TRAVIS_TAG
|
||||
email: "emin@emin.ch"
|
||||
api_key: "${NPM_TOKEN}"
|
||||
skip_cleanup: true
|
||||
- provider: npm
|
||||
on:
|
||||
condition: $TRAVIS_BRANCH == "master-cli-v2" && -n $TRAVIS_TAG
|
||||
email: "emin@emin.ch"
|
||||
api_key: "${NPM_TOKEN}"
|
||||
skip_cleanup: true
|
||||
tag: next
|
||||
@@ -0,0 +1,116 @@
|
||||
/**
|
||||
* 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, {Fragment} from 'react';
|
||||
import {
|
||||
SafeAreaView,
|
||||
StyleSheet,
|
||||
ScrollView,
|
||||
View,
|
||||
Text,
|
||||
StatusBar,
|
||||
} from 'react-native';
|
||||
|
||||
import {
|
||||
Header,
|
||||
LearnMoreLinks,
|
||||
Colors,
|
||||
DebugInstructions,
|
||||
ReloadInstructions,
|
||||
} from 'react-native/Libraries/NewAppScreen';
|
||||
|
||||
const App = () => {
|
||||
return (
|
||||
<Fragment>
|
||||
<StatusBar barStyle="dark-content" />
|
||||
<SafeAreaView>
|
||||
<ScrollView
|
||||
contentInsetAdjustmentBehavior="automatic"
|
||||
style={styles.scrollView}>
|
||||
<Header />
|
||||
{global.HermesInternal == null ? null : (
|
||||
<View style={styles.engine}>
|
||||
<Text style={styles.footer}>Engine: Hermes</Text>
|
||||
</View>
|
||||
)}
|
||||
<View style={styles.body}>
|
||||
<View style={styles.sectionContainer}>
|
||||
<Text style={styles.sectionTitle}>Step One</Text>
|
||||
<Text style={styles.sectionDescription}>
|
||||
Edit <Text style={styles.highlight}>App.tsx</Text> to change this
|
||||
screen and then come back to see your edits.
|
||||
</Text>
|
||||
</View>
|
||||
<View style={styles.sectionContainer}>
|
||||
<Text style={styles.sectionTitle}>See Your Changes</Text>
|
||||
<Text style={styles.sectionDescription}>
|
||||
<ReloadInstructions />
|
||||
</Text>
|
||||
</View>
|
||||
<View style={styles.sectionContainer}>
|
||||
<Text style={styles.sectionTitle}>Debug</Text>
|
||||
<Text style={styles.sectionDescription}>
|
||||
<DebugInstructions />
|
||||
</Text>
|
||||
</View>
|
||||
<View style={styles.sectionContainer}>
|
||||
<Text style={styles.sectionTitle}>Learn More</Text>
|
||||
<Text style={styles.sectionDescription}>
|
||||
Read the docs to discover what to do next:
|
||||
</Text>
|
||||
</View>
|
||||
<LearnMoreLinks />
|
||||
</View>
|
||||
</ScrollView>
|
||||
</SafeAreaView>
|
||||
</Fragment>
|
||||
);
|
||||
};
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
scrollView: {
|
||||
backgroundColor: Colors.lighter,
|
||||
},
|
||||
engine: {
|
||||
position: 'absolute',
|
||||
right: 0,
|
||||
},
|
||||
body: {
|
||||
backgroundColor: Colors.white,
|
||||
},
|
||||
sectionContainer: {
|
||||
marginTop: 32,
|
||||
paddingHorizontal: 24,
|
||||
},
|
||||
sectionTitle: {
|
||||
fontSize: 24,
|
||||
fontWeight: '600',
|
||||
color: Colors.black,
|
||||
},
|
||||
sectionDescription: {
|
||||
marginTop: 8,
|
||||
fontSize: 18,
|
||||
fontWeight: '400',
|
||||
color: Colors.dark,
|
||||
},
|
||||
highlight: {
|
||||
fontWeight: '700',
|
||||
},
|
||||
footer: {
|
||||
color: Colors.dark,
|
||||
fontSize: 12,
|
||||
fontWeight: '600',
|
||||
padding: 4,
|
||||
paddingRight: 12,
|
||||
textAlign: 'right',
|
||||
},
|
||||
});
|
||||
|
||||
export default App;
|
||||
@@ -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,17 @@
|
||||
# Contributing
|
||||
|
||||
Contributing to this project should be as easy and transparent as possible.
|
||||
|
||||
## Workflow
|
||||
|
||||
Right now there are two master branches in order to keep support for the old React Native CLI (for more info, check out the [related issue](https://github.com/react-native-community/react-native-template-typescript/issues/39)).
|
||||
|
||||
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/).
|
||||
@@ -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,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2018 Emin Khateeb
|
||||
Copyright (c) 2019 Emin Khateeb
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,44 +1,38 @@
|
||||
# :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
|
||||
|
||||
Clean and minimalist React Native template for a quick start with TypeScript.
|
||||
<p>
|
||||
<a href="https://travis-ci.org/react-native-community/react-native-template-typescript">
|
||||
<img alt="Build Status" src="https://img.shields.io/travis/react-native-community/react-native-template-typescript.svg" target="_blank" />
|
||||
</a>
|
||||
<a href="https://github.com/react-native-community/react-native-template-typescript#readme">
|
||||
<img alt="Documentation" src="https://img.shields.io/badge/documentation-yes-brightgreen.svg" target="_blank" />
|
||||
</a>
|
||||
<a href="https://github.com/react-native-community/react-native-template-typescript/graphs/commit-activity">
|
||||
<img alt="Maintenance" src="https://img.shields.io/badge/Maintained%3F-yes-green.svg" target="_blank" />
|
||||
</a>
|
||||
<a href="https://github.com/react-native-community/react-native-template-typescript/blob/master/LICENSE">
|
||||
<img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg" target="_blank" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
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.
|
||||
> Clean and minimalist React Native template for a quick start with TypeScript.
|
||||
|
||||
## :arrow_forward: Quick Start
|
||||
## :star: Features
|
||||
|
||||
```
|
||||
- Elegant usage directly within the [React Native CLI](https://github.com/react-native-community/cli)
|
||||
- Consistent with the default React Native template
|
||||
- Minimal additional dependencies
|
||||
|
||||
## :arrow_forward: Usage
|
||||
|
||||
```sh
|
||||
react-native init MyApp --template typescript
|
||||
cd MyApp
|
||||
node setup.js
|
||||
```
|
||||
|
||||
## :question: FAQ
|
||||
## :computer: Contributing
|
||||
|
||||
### What is included in this template?
|
||||
Contributions are very welcome. Please check out the [contributing document](CONTRIBUTING.md).
|
||||
|
||||
- [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)
|
||||
## :bookmark: License
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
### How will this template affect the React Native CLI workflow?
|
||||
|
||||
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.
|
||||
|
||||
## :hearts: Contributing
|
||||
|
||||
Contributions are very welcome. Please try to stay consistent with the other files I've created.
|
||||
|
||||
### Donations
|
||||
|
||||
I created this project in my spare time because I enjoy coding. Of course you can support me by [buying me a coffee](https://www.paypal.me/emin93) if you wish. :coffee: :relieved:
|
||||
This project is [MIT](LICENSE) licensed.
|
||||
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* @format
|
||||
*/
|
||||
|
||||
import 'react-native';
|
||||
import React from 'react';
|
||||
import App from '../App';
|
||||
|
||||
// Note: test renderer must be required after react-native.
|
||||
import renderer from 'react-test-renderer';
|
||||
|
||||
it('renders correctly', () => {
|
||||
renderer.create(<App />);
|
||||
});
|
||||
@@ -1,9 +0,0 @@
|
||||
import * as React from "react";
|
||||
import "react-native";
|
||||
import { create } from "react-test-renderer";
|
||||
|
||||
import App from "../src/App";
|
||||
|
||||
it("renders correctly", () => {
|
||||
const tree = create(<App exampleProp="helloWorld" />);
|
||||
});
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
# 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
|
||||
|
||||
# CocoaPods
|
||||
/ios/Pods/
|
||||
+7
-10
@@ -1,10 +1,7 @@
|
||||
[
|
||||
"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",
|
||||
"typescript": "latest"
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
import { AppRegistry } from 'react-native';
|
||||
import App from './src/App';
|
||||
|
||||
AppRegistry.registerComponent('HelloWorld', () => App);
|
||||
@@ -0,0 +1,4 @@
|
||||
module.exports = {
|
||||
preset: 'react-native',
|
||||
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"transform": {
|
||||
"^.+\\.tsx?$": "ts-jest"
|
||||
},
|
||||
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
|
||||
"moduleFileExtensions": [
|
||||
"ts",
|
||||
"tsx",
|
||||
"js",
|
||||
"jsx",
|
||||
"json",
|
||||
"node"
|
||||
],
|
||||
"modulePaths": ["<rootDir>"]
|
||||
}
|
||||
Generated
+1810
File diff suppressed because it is too large.
Load diff
+28
-23
@@ -1,25 +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",
|
||||
"template",
|
||||
"typescript",
|
||||
"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": "13.0.2"
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
module.exports = {
|
||||
getTransformModulePath() {
|
||||
return require.resolve('react-native-typescript-transformer');
|
||||
},
|
||||
getSourceExts() {
|
||||
return ['ts', 'tsx'];
|
||||
}
|
||||
}
|
||||
@@ -1,30 +1,25 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { execSync } = require('child_process');
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
const packageJson = require('./package.json');
|
||||
const jestJson = require('./jest.json');
|
||||
const devDependencies = require('./devDependencies.json');
|
||||
if (fs.existsSync(path.join(__dirname, '.travis.yml'))) {
|
||||
process.exit()
|
||||
}
|
||||
|
||||
const deleteFile = (fileName) => fs.unlinkSync(path.join(process.cwd(), fileName));
|
||||
const writeFile = (fileName, data) => fs.writeFileSync(path.join(process.cwd(), fileName), data);
|
||||
const projectFilesToDelete = ['.flowconfig', 'App.js', '__tests__/App-test.js']
|
||||
|
||||
console.log('🔄 Please wait...');
|
||||
const templateFilesToDelete = ['setup.js', 'README.md', 'LICENSE']
|
||||
|
||||
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));
|
||||
const deleteFile = filePath => {
|
||||
if (!fs.existsSync(filePath)) {
|
||||
return
|
||||
}
|
||||
|
||||
execSync(`npm i ${devDependencies.join(' ')} --save-dev --save-exact`);
|
||||
fs.unlinkSync(filePath)
|
||||
}
|
||||
|
||||
deleteFile('App.js');
|
||||
deleteFile('__tests__/App.js');
|
||||
deleteFile('.flowconfig');
|
||||
deleteFile('devDependencies.json');
|
||||
deleteFile('jest.json');
|
||||
deleteFile('README.md');
|
||||
deleteFile('LICENSE');
|
||||
deleteFile('setup.js');
|
||||
const projectPath = path.join(__dirname, '..', '..')
|
||||
const deleteProjectFile = fileName => deleteFile(path.join(projectPath, fileName))
|
||||
const deleteTemplateFile = fileName => deleteFile(path.join(__dirname, fileName))
|
||||
|
||||
console.log('✅ Setup completed! You can now start with: npm start');
|
||||
projectFilesToDelete.forEach(deleteProjectFile)
|
||||
templateFilesToDelete.forEach(deleteTemplateFile)
|
||||
-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", "metro.config.js", "jest.config.js"]
|
||||
}
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"defaultSeverity": "error",
|
||||
"extends": [
|
||||
"tslint:recommended",
|
||||
"tslint-react"
|
||||
],
|
||||
"jsRules": {},
|
||||
"rules": {},
|
||||
"rulesDirectory": []
|
||||
}
|
||||
Reference in new issue
Block a user