Skip to content
This repository was archived by the owner on Dec 6, 2019. It is now read-only.

Commit c45d10c

Browse files
authored
86-absolute-path-imports (#88)
* Use babel-plugin-module-resolver to imitate using NODE_PATH for absolute imports * Add linter support * Test in storybook Web picks up on babel config so it's all good, no need to NODE_PATH this one * Modify all other imports
1 parent 88ff20f commit c45d10c

15 files changed

+79
-35
lines changed

.babelrc

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
{
22
"presets": ["react-native-stage-0/decorator-support"],
3+
"plugins": [
4+
["module-resolver", {
5+
"root": ["./src"],
6+
"extensions": [".android.js", ".ios.js", ".js"]
7+
}]
8+
],
39
"env": {
410
"development": {
5-
"plugins": ["transform-react-jsx-source"]
11+
"plugins": [
12+
"transform-react-jsx-source"
13+
]
614
}
715
}
816
}

.eslintrc.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module.exports = {
55
"jest",
66
],
77
"rules": {
8-
"import/no-extraneous-dependencies": ["error", { "devDependencies": true }],
8+
"import/no-extraneous-dependencies": 0,
99
"react/jsx-filename-extension": 0,
1010
"react/jsx-curly-brace-presence": 0,
1111
"react/prefer-stateless-function": [2, { "ignorePureComponents": true }],
@@ -17,6 +17,11 @@ module.exports = {
1717
"jsx-a11y/media-has-caption": 0,
1818
"global-require": 0,
1919
},
20+
"settings": {
21+
"import/resolver": {
22+
"babel-module": {}
23+
}
24+
},
2025
"env": {
2126
"jest/globals": true,
2227
"browser": true,

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
"@storybook/react-native": "^3.2.14",
1212
"appr": "conrad-vanl/appr#commit-statuses",
1313
"babel-eslint": "^8.0.1",
14+
"babel-plugin-module-resolver": "3.0.0-beta.5",
1415
"babel-preset-react-native-stage-0": "^1.0.1",
1516
"danger": "^2.0.0-alpha.20",
1617
"dotenv": "^4.0.0",
1718
"eslint": "^4.10.0",
1819
"eslint-config-airbnb": "^16.1.0",
20+
"eslint-import-resolver-babel-module": "^4.0.0-beta.3",
1921
"eslint-plugin-import": "^2.8.0",
2022
"eslint-plugin-jest": "21.2.0",
2123
"eslint-plugin-jsx-a11y": "6.0.2",
@@ -32,7 +34,7 @@
3234
"start": "npm run create-app-entrypoint && npm run run-with-settings 'react-native-scripts start'",
3335
"android": "npm run create-app-entrypoint && npm run run-with-settings 'react-native-scripts android'",
3436
"ios": "npm run create-app-entrypoint && npm run run-with-settings 'react-native-scripts ios'",
35-
"web": "npm run create-app-entrypoint && npm run run-with-settings 'react-scripts start'",
37+
"web": "npm run create-app-entrypoint && NODE_PATH=./src npm run run-with-settings 'react-scripts start'",
3638
"build": "npm run create-app-entrypoint && npm run run-with-settings 'react-scripts build'",
3739
"build-storybook": "npm run create-storybook-entrypoint && npm run storybook-load-stories && build-storybook -c src/.storybook/web -s public",
3840
"test": "npm run lint && npm run jest",

src/@modules/Audio/Audio.stories.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import { storiesOf } from '@storybook/react-native';
44
import {
55
View,
66
} from 'react-native';
7-
import Play from '../../@primitives/icons/Play';
8-
import Pause from '../../@primitives/icons/Pause';
7+
import Play from '@primitives/icons/Play';
8+
import Pause from '@primitives/icons/Pause';
99

10-
import ThemeProvider from '../../@primitives/ThemeProvider';
10+
import ThemeProvider from '@primitives/ThemeProvider';
1111
import Audio from './';
1212

1313
storiesOf('Audio', module)

src/@modules/Audio/Audio.tests.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import renderer from 'react-test-renderer';
33
import {
44
View,
55
} from 'react-native';
6-
import ThemeProvider from '../../@primitives/ThemeProvider';
6+
import ThemeProvider from '@primitives/ThemeProvider';
7+
import Play from '@primitives/icons/Play';
8+
import Pause from '@primitives/icons/Pause';
79
import Audio from './';
8-
import Play from '../../@primitives/icons/Play';
9-
import Pause from '../../@primitives/icons/Pause';
1010

1111
it('renders correctly', () => {
1212
const tree = renderer.create(

src/@modules/Audio/AudioPause.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
55
import {
66
TouchableHighlight,
77
} from 'react-native';
8-
import onlyPropTypes from '../../@utils/onlyPropTypes';
8+
import onlyPropTypes from '@utils/onlyPropTypes';
99

1010
export class AudioPause extends PureComponent {
1111
static propTypes = {

src/@modules/Audio/AudioPlay.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
55
import {
66
TouchableHighlight,
77
} from 'react-native';
8-
import onlyPropTypes from '../../@utils/onlyPropTypes';
8+
import onlyPropTypes from '@utils/onlyPropTypes';
99

1010
export class AudioPlay extends PureComponent {
1111
static propTypes = {

src/@modules/Audio/AudioSeeker.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { PureComponent } from 'react';
22
import getContext from 'recompose/getContext';
33
import compose from 'recompose/compose';
44
import PropTypes from 'prop-types';
5-
import Seeker from '../../@primitives/Seeker';
5+
import Seeker from '@primitives/Seeker';
66

77
export class AudioSeeker extends PureComponent {
88
static propTypes = {

src/@modules/FooterNav/FooterNavLink.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
View,
66
} from 'react-native';
77
import PropTypes from 'prop-types';
8-
import NavLink from '../NativeWebRouter/NavLink';
8+
import NavLink from '@modules/NativeWebRouter/NavLink';
99

1010
const styles = StyleSheet.create({
1111
container: {

src/@modules/Header/Header.stories.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React from 'react';
22

33
import { storiesOf } from '@storybook/react-native';
44

5-
import Header from './';
5+
import Header from '@modules/Header';
66

77
storiesOf('Header', module)
88
.add('renders', () => <Header />);

src/@primitives/FontLoader/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Component } from 'react';
22
import { Font } from 'expo';
33
import PropTypes from 'prop-types';
4-
import FONTS from '../../assets/fonts';
4+
import FONTS from 'assets/fonts';
55

66
export default class FontLoader extends Component {
77
static propTypes = {

src/index.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ import {
66
} from 'react-native';
77
import { Provider as ReduxProvider } from 'react-redux';
88
import { ApolloProvider } from 'react-apollo';
9-
import { Router, Route, AndroidBackButton } from './@modules/NativeWebRouter';
10-
import * as pages from './pages';
11-
import ThemeProvider from './@primitives/ThemeProvider';
12-
import FontLoader from './@primitives/FontLoader';
13-
import Store from './@data/Store';
14-
import Client from './@data/Client';
9+
import { Router, Route, AndroidBackButton } from '@modules/NativeWebRouter';
10+
import * as pages from 'pages';
11+
import ThemeProvider from '@primitives/ThemeProvider';
12+
import FontLoader from '@primitives/FontLoader';
13+
import Store from '@data/Store';
14+
import Client from '@data/Client';
1515

1616
const App = () => (
1717
<ApolloProvider client={Client}>

src/pages/Feed.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import React from 'react';
22
import {
33
View,
44
} from 'react-native';
5-
import Header from '../@modules/Header';
6-
import FooterNav from '../@modules/FooterNav';
7-
import H1 from '../@primitives/H1';
8-
import Umbrella from '../@primitives/icons/Umbrella';
9-
import { Desktop, Mobile } from '../@primitives/MediaQuery';
10-
import Audio from '../@modules/Audio';
11-
import Play from '../@primitives/icons/Play';
12-
import Pause from '../@primitives/icons/Pause';
5+
import Header from '@modules/Header';
6+
import FooterNav from '@modules/FooterNav';
7+
import H1 from '@primitives/H1';
8+
import Umbrella from '@primitives/icons/Umbrella';
9+
import { Desktop, Mobile } from '@primitives/MediaQuery';
10+
import Audio from '@modules/Audio';
11+
import Play from '@primitives/icons/Play';
12+
import Pause from '@primitives/icons/Pause';
1313

1414
export default function Feed() {
1515
return (

src/pages/Sections.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import {
33
StyleSheet,
44
View,
55
} from 'react-native';
6-
import Header from '../@modules/Header';
7-
import FooterNav from '../@modules/FooterNav';
6+
import Header from '@modules/Header';
7+
import FooterNav from '@modules/FooterNav';
88

99
const styles = StyleSheet.create({
1010
container: {

yarn.lock

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,6 +1112,16 @@ babel-plugin-minify-type-constructors@^0.2.0:
11121112
dependencies:
11131113
babel-helper-is-void-0 "^0.2.0"
11141114

1115+
1116+
version "3.0.0-beta.5"
1117+
resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.0.0-beta.5.tgz#8e2873d841e4c800994a19e54ca5e2d08db9dd42"
1118+
dependencies:
1119+
find-babel-config "^1.1.0"
1120+
glob "^7.1.2"
1121+
pkg-up "^2.0.0"
1122+
reselect "^3.0.1"
1123+
resolve "^1.4.0"
1124+
11151125
babel-plugin-module-resolver@^2.7.1:
11161126
version "2.7.1"
11171127
resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-2.7.1.tgz#18be3c42ddf59f7a456c9e0512cd91394f6e4be1"
@@ -3688,6 +3698,15 @@ eslint-config-react-app@^2.0.1:
36883698
version "2.0.1"
36893699
resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-2.0.1.tgz#fd0503da01ae608f0c6ae8861de084975142230e"
36903700

3701+
eslint-import-resolver-babel-module@^4.0.0-beta.3:
3702+
version "4.0.0-beta.3"
3703+
resolved "https://registry.yarnpkg.com/eslint-import-resolver-babel-module/-/eslint-import-resolver-babel-module-4.0.0-beta.3.tgz#b9d6fbec09863c25c6f23304662c3ca068bddc64"
3704+
dependencies:
3705+
babel-jest "^20.0.3"
3706+
jest "^20.0.3"
3707+
pkg-up "^2.0.0"
3708+
resolve "^1.3.3"
3709+
36913710
eslint-import-resolver-node@^0.3.1:
36923711
version "0.3.1"
36933712
resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc"
@@ -4271,7 +4290,7 @@ [email protected]:
42714290
statuses "~1.3.1"
42724291
unpipe "~1.0.0"
42734292

4274-
find-babel-config@^1.0.1:
4293+
find-babel-config@^1.0.1, find-babel-config@^1.1.0:
42754294
version "1.1.0"
42764295
resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.1.0.tgz#acc01043a6749fec34429be6b64f542ebb5d6355"
42774296
dependencies:
@@ -5831,7 +5850,7 @@ jest-validate@^20.0.3:
58315850
leven "^2.1.0"
58325851
pretty-format "^20.0.3"
58335852

5834-
[email protected], jest@^20.0.4:
5853+
[email protected], jest@^20.0.3, jest@^20.0.4:
58355854
version "20.0.4"
58365855
resolved "https://registry.yarnpkg.com/jest/-/jest-20.0.4.tgz#3dd260c2989d6dad678b1e9cc4d91944f6d602ac"
58375856
dependencies:
@@ -7458,6 +7477,12 @@ pkg-dir@^2.0.0:
74587477
dependencies:
74597478
find-up "^2.1.0"
74607479

7480+
pkg-up@^2.0.0:
7481+
version "2.0.0"
7482+
resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f"
7483+
dependencies:
7484+
find-up "^2.1.0"
7485+
74617486
74627487
version "2.0.1"
74637488
resolved "https://registry.yarnpkg.com/plist/-/plist-2.0.1.tgz#0a32ca9481b1c364e92e18dc55c876de9d01da8b"
@@ -8871,6 +8896,10 @@ [email protected]:
88718896
version "2.0.5"
88728897
resolved "https://registry.yarnpkg.com/reqwest/-/reqwest-2.0.5.tgz#00fb15ac4918c419ca82b43f24c78882e66039a1"
88738898

8899+
reselect@^3.0.1:
8900+
version "3.0.1"
8901+
resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147"
8902+
88748903
resolve-cwd@^2.0.0:
88758904
version "2.0.0"
88768905
resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
@@ -8900,7 +8929,7 @@ [email protected]:
89008929
version "1.1.7"
89018930
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
89028931

8903-
resolve@^1.1.6, resolve@^1.2.0, resolve@^1.3.2:
8932+
resolve@^1.1.6, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.4.0:
89048933
version "1.5.0"
89058934
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
89068935
dependencies:
@@ -10272,7 +10301,7 @@ [email protected]:
1027210301
dependencies:
1027310302
indexof "0.0.1"
1027410303

10275-
"vm2@github:patriksimek/vm2#custom_files":
10304+
vm2@patriksimek/vm2#custom_files:
1027610305
version "3.5.0"
1027710306
resolved "https://codeload.github.com/patriksimek/vm2/tar.gz/7e82f90ac705fc44fad044147cb0df09b4c79a57"
1027810307

0 commit comments

Comments
 (0)