Skip to content

Commit 0c17398

Browse files
committed
Local dev process setup
1 parent 21458aa commit 0c17398

10 files changed

+113
-5
lines changed

RNTester/js/RNTesterApp.desktop.js renamed to RNTester/js/RNTesterApp.desktop-qt.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const ReactNative = require('react-native');
1717
const RNTesterActions = require('./RNTesterActions');
1818
const RNTesterExampleContainer = require('./RNTesterExampleContainer');
1919
const RNTesterExampleList = require('./RNTesterExampleList');
20-
const RNTesterList = require('./RNTesterList.desktop');
20+
const RNTesterList = require('./RNTesterList.desktop-qt');
2121
const RNTesterNavigationReducer = require('./RNTesterNavigationReducer');
2222
const URIActionMap = require('./URIActionMap');
2323

RNTester/qml/RNTester.qml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ Rectangle {
2020
anchors.fill: parent
2121

2222
moduleName: "RNTesterApp"
23-
codeLocation: "http://localhost:8081/RNTester/js/RNTesterApp.desktop.bundle?platform=desktop&dev=true"
23+
codeLocation: "http://localhost:8081/RNTester/js/RNTesterApp.desktop-qt.bundle?platform=desktop-qt&dev=true"
2424
}
2525
}

jest/hasteImpl.js

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
/**
2+
* Copyright (c) 2014-present, Facebook, Inc.
3+
*
4+
* This source code is licensed under the MIT license found in the
5+
* LICENSE file in the root directory of this source tree.
6+
*
7+
* @format
8+
* @flow
9+
*/
10+
11+
'use strict';
12+
13+
const path = require('path');
14+
15+
16+
const ROOTS = [
17+
path.resolve(__dirname, '../node_modules/react-native') + path.sep,
18+
path.resolve(__dirname, '..') + path.sep,
19+
];
20+
21+
console.log(ROOTS)
22+
23+
const BLACKLISTED_PATTERNS /*: Array<RegExp> */ = [
24+
/.*[\\\/]__(mocks|tests)__[\\\/].*/,
25+
/^Libraries[\\\/]Animated[\\\/]src[\\\/]polyfills[\\\/].*/,
26+
/^Libraries[\\\/]Renderer[\\\/]fb[\\\/].*/,
27+
];
28+
29+
const WHITELISTED_PREFIXES /*: Array<string> */ = [
30+
'IntegrationTests',
31+
'Libraries',
32+
'ReactAndroid',
33+
'RNTester',
34+
];
35+
36+
const NAME_REDUCERS /*: Array<[RegExp, string]> */ = [
37+
// extract basename
38+
[/^(?:.*[\\\/])?([a-zA-Z0-9$_.-]+)$/, '$1'],
39+
// strip .js/.js.flow suffix
40+
[/^(.*)\.js(\.flow)?$/, '$1'],
41+
// strip .android/.ios/.native/.web suffix
42+
[/^(.*)\.(android|ios|native|web|windows|dom|desktop-qt)$/, '$1'],
43+
];
44+
45+
const haste = {
46+
/*
47+
* @return {string|void} hasteName for module at filePath; or undefined if
48+
* filePath is not a haste module
49+
*/
50+
getHasteName(
51+
filePath /*: string */,
52+
sourceCode /*: ?string */,
53+
) /*: string | void */ {
54+
if (!isHastePath(filePath)) {
55+
return undefined;
56+
}
57+
58+
const hasteName = NAME_REDUCERS.reduce(
59+
(name, [pattern, replacement]) => name.replace(pattern, replacement),
60+
filePath,
61+
);
62+
63+
return hasteName;
64+
},
65+
};
66+
67+
function isHastePath(filePath /*: string */) /*: boolean */ {
68+
if (!filePath.endsWith('.js') && !filePath.endsWith('.js.flow')) {
69+
return false;
70+
}
71+
72+
const resolvedFilePath = path.resolve(filePath);
73+
const root = ROOTS.find(r => resolvedFilePath.startsWith(r));
74+
if (!root) {
75+
return false;
76+
}
77+
78+
filePath = resolvedFilePath.substr(root.length);
79+
if (BLACKLISTED_PATTERNS.some(pattern => pattern.test(filePath))) {
80+
return false;
81+
}
82+
return WHITELISTED_PREFIXES.some(prefix => filePath.startsWith(prefix));
83+
}
84+
85+
module.exports = haste;

metro.config.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"use strict";
2+
3+
var path = require("path");
4+
const blacklist = require("metro-config/src/defaults/blacklist");
5+
const defaultPolyfills = require("react-native/rn-get-polyfills");
6+
7+
var config = {
8+
resolver: {
9+
hasteImplModulePath: require.resolve('./jest/hasteImpl'),
10+
platforms: ["desktop-qt"],
11+
},
12+
};
13+
14+
module.exports = config;

package.json

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
"version": "1.0.0",
44
"description": "React native for desktop",
55
"scripts": {
6-
"test": "echo \"Error: no test specified\" && exit 1"
6+
"test": "echo \"Error: no test specified\" && exit 1",
7+
"start": "node node_modules/react-native/local-cli/cli.js start"
78
},
89
"repository": {
910
"type": "git",
@@ -17,9 +18,17 @@
1718
"homepage": "https://github.com/vkjr/react-native-desktop-qt#readme",
1819
"rnpm": {
1920
"haste": {
20-
"providesModuleNodeModules": ["react-native-desktop-qt"],
21-
"platforms": ["desktop-qt"]
21+
"providesModuleNodeModules": [
22+
"react-native-desktop-qt"
23+
],
24+
"platforms": [
25+
"desktop-qt"
26+
]
2227
},
2328
"plugin": "./local-cli/index.js"
29+
},
30+
"devDependencies": {
31+
"react": "^16.6.3",
32+
"react-native": "^0.57.8"
2433
}
2534
}

0 commit comments

Comments
 (0)