Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
57233a492b | ||
|
|
b8f4b89aca | ||
|
|
80e970bda8 | ||
|
|
dc432eea2d | ||
|
|
8c5248b2b3 | ||
|
|
11fa0420ed | ||
|
|
d885abb7ce | ||
|
|
fbe903ad81 | ||
|
|
eff79f6d54 | ||
|
|
d3f6c2e173 | ||
|
|
418f04b312 | ||
|
|
126df709d6 | ||
|
|
590b9f8326 | ||
|
|
7b686518ed | ||
|
|
491b0caf18 | ||
|
|
393523caa6 |
No files matched your search
+3
-1
@@ -1,7 +1,9 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "node"
|
||||
install: true
|
||||
cache:
|
||||
directories:
|
||||
- "node_modules"
|
||||
deploy:
|
||||
on:
|
||||
tags: true
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* https://github.com/emin93/react-native-template-typescript
|
||||
*/
|
||||
|
||||
import * as React from 'react';
|
||||
import React, { Component } from 'react';
|
||||
import {
|
||||
Platform,
|
||||
StyleSheet,
|
||||
@@ -21,8 +21,8 @@ const instructions = Platform.select({
|
||||
'Shake or press menu button for dev menu',
|
||||
});
|
||||
|
||||
interface Props {};
|
||||
export default class App extends React.Component<Props> {
|
||||
interface Props {}
|
||||
export default class App extends Component<Props> {
|
||||
render() {
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
|
||||
@@ -43,6 +43,10 @@ The React Native CLI supports automatic installation of production dependencies
|
||||
|
||||
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.
|
||||
|
||||
### Does debugging work too?
|
||||
|
||||
Yes it does. Some users reported that they got an error about relative paths when they tried to debug inside Visual Studio Code. In this case check out the [fix by Mo Mac](https://medium.com/@nocnoc/great-work-f0b5ef365ca6).
|
||||
|
||||
## :globe_with_meridians: Links
|
||||
|
||||
- ["Using React Native with TypeScript just became simple" on Medium](https://medium.com/@emin93/react-native-typescript-b965059109d3)
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
import 'react-native';
|
||||
import * as React from 'react';
|
||||
import React from 'react';
|
||||
import App from '../App';
|
||||
|
||||
// Note: test renderer must be required after react-native.
|
||||
import * as renderer from 'react-test-renderer';
|
||||
import renderer from 'react-test-renderer';
|
||||
|
||||
it('renders correctly', () => {
|
||||
const tree = renderer.create(
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
[
|
||||
"typescript",
|
||||
"react-native-typescript-transformer",
|
||||
"ts-jest",
|
||||
"@types/react",
|
||||
"@types/react-native",
|
||||
"@types/jest",
|
||||
"@types/react-test-renderer"
|
||||
"@types/jest",
|
||||
"@types/react",
|
||||
"@types/react-native",
|
||||
"@types/react-test-renderer",
|
||||
"react-native-typescript-transformer",
|
||||
"ts-jest",
|
||||
"typescript"
|
||||
]
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"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
+1899
File diff suppressed because it is too large.
Load diff
+27
-23
@@ -1,25 +1,29 @@
|
||||
{
|
||||
"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",
|
||||
"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": "git reset --hard && 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",
|
||||
"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": "11.0.1"
|
||||
}
|
||||
}
|
||||
+7
-7
@@ -1,8 +1,8 @@
|
||||
module.exports = {
|
||||
getTransformModulePath() {
|
||||
return require.resolve('react-native-typescript-transformer');
|
||||
},
|
||||
getSourceExts() {
|
||||
return ['ts', 'tsx'];
|
||||
}
|
||||
}
|
||||
getTransformModulePath() {
|
||||
return require.resolve('react-native-typescript-transformer');
|
||||
},
|
||||
getSourceExts() {
|
||||
return ['ts', 'tsx'];
|
||||
},
|
||||
};
|
||||
@@ -1,48 +1,56 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { execSync } = require('child_process');
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const {execSync} = require('child_process')
|
||||
|
||||
const packageJson = require('./package.json');
|
||||
const jestConfig = require('./jest.json');
|
||||
const devDependencies = require('./devDependencies.json');
|
||||
const packageJson = require('./package.json')
|
||||
const jestConfig = 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);
|
||||
const deleteFile = (fileName) => {
|
||||
const filePath = path.join(process.cwd(), fileName)
|
||||
|
||||
if (!fs.existsSync(filePath)) {
|
||||
return
|
||||
}
|
||||
|
||||
fs.unlinkSync(filePath)
|
||||
}
|
||||
const writeFile = (fileName, data) => fs.writeFileSync(path.join(process.cwd(), fileName), data)
|
||||
const isYarnAvailable = () => {
|
||||
try {
|
||||
execSync('yarn --version', { stdio: 'ignore' });
|
||||
return true;
|
||||
} catch (exc) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
const packageManager = isYarnAvailable() ? 'yarn' : 'npm';
|
||||
const execOptions = { stdio: 'inherit' };
|
||||
|
||||
console.log('🔄 Please wait...\n');
|
||||
|
||||
packageJson.scripts.start = `${packageJson.scripts.start} --config ../../../../rn-cli.config.js`;
|
||||
packageJson.jest = Object.assign(packageJson.jest, jestConfig);
|
||||
writeFile('package.json', JSON.stringify(packageJson, null, 2));
|
||||
|
||||
console.log(`📦 Installing dependencies with ${packageManager}...\n`);
|
||||
|
||||
switch (packageManager) {
|
||||
case 'yarn':
|
||||
execSync(`yarn add ${devDependencies.join(' ')} --dev --exact`, execOptions);
|
||||
break;
|
||||
default:
|
||||
execSync(`npm i ${devDependencies.join(' ')} --save-dev --save-exact`, execOptions);
|
||||
try {
|
||||
execSync('yarn --version', {stdio: 'ignore'})
|
||||
return true
|
||||
} catch (exc) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
deleteFile('App.js');
|
||||
deleteFile('__tests__/App.js');
|
||||
deleteFile('.flowconfig');
|
||||
deleteFile('devDependencies.json');
|
||||
deleteFile('jest.json');
|
||||
deleteFile('README.md');
|
||||
deleteFile('LICENSE');
|
||||
deleteFile('setup.js');
|
||||
const packageManager = isYarnAvailable() ? 'yarn' : 'npm'
|
||||
const execOptions = {stdio: 'inherit'}
|
||||
|
||||
console.log(`\n✅ Setup completed! You can now start with: ${packageManager} start\n`);
|
||||
console.log('🔄 Please wait...\n')
|
||||
|
||||
packageJson.scripts.start = `${packageJson.scripts.start} --config ../../../../rn-cli.config.js`
|
||||
packageJson.jest = Object.assign(packageJson.jest, jestConfig)
|
||||
writeFile('package.json', JSON.stringify(packageJson, null, 2))
|
||||
|
||||
console.log(`📦 Installing dependencies with ${packageManager}...\n`)
|
||||
|
||||
switch (packageManager) {
|
||||
case 'yarn':
|
||||
execSync(`yarn add ${devDependencies.join(' ')} --dev --exact`, execOptions)
|
||||
break
|
||||
default:
|
||||
execSync(`npm i ${devDependencies.join(' ')} --save-dev --save-exact`, execOptions)
|
||||
}
|
||||
|
||||
deleteFile('App.js')
|
||||
deleteFile('__tests__/App.js')
|
||||
deleteFile('.flowconfig')
|
||||
deleteFile('devDependencies.json')
|
||||
deleteFile('jest.json')
|
||||
deleteFile('README.md')
|
||||
deleteFile('LICENSE')
|
||||
deleteFile('setup.js')
|
||||
|
||||
console.log(`\n✅ Setup completed! You can now start with: ${packageManager} start\n`)
|
||||
+12
-10
@@ -1,12 +1,14 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es2015",
|
||||
"jsx": "react",
|
||||
"noEmit": true,
|
||||
"moduleResolution": "node",
|
||||
"noImplicitAny": true
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules"
|
||||
]
|
||||
"compilerOptions": {
|
||||
"target": "es2015",
|
||||
"jsx": "react",
|
||||
"noEmit": true,
|
||||
"moduleResolution": "node",
|
||||
"noImplicitAny": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"esModuleInterop": true
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules"
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user