Skip to content

Commit a9a0021

Browse files
frenzzyokendoken
authored andcommitted
Support for absolute imports (#1312)
1 parent 1cb2574 commit a9a0021

File tree

5 files changed

+36
-7
lines changed

5 files changed

+36
-7
lines changed

.eslintrc.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,14 @@ module.exports = {
6262
// You can reopen this if you still want this rule
6363
'react/prefer-stateless-function': 'off',
6464
},
65+
66+
settings: {
67+
// Allow absolute paths in imports, e.g. import Button from 'components/Button'
68+
// https://github.com/benmosher/eslint-plugin-import/tree/master/resolvers
69+
'import/resolver': {
70+
node: {
71+
moduleDirectory: ['node_modules', 'src'],
72+
},
73+
},
74+
},
6575
};

.flowconfig

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,7 @@
55
.*/public
66

77
[include]
8+
9+
[options]
10+
module.system.node.resolve_dirname=node_modules
11+
module.system.node.resolve_dirname=src

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
"enzyme": "^2.8.2",
7979
"eslint": "^3.19.0",
8080
"eslint-config-airbnb": "^15.0.1",
81+
"eslint-import-resolver-node": "^0.3.0",
8182
"eslint-loader": "^1.7.1",
8283
"eslint-plugin-css-modules": "^2.7.1",
8384
"eslint-plugin-import": "^2.3.0",
@@ -131,6 +132,7 @@
131132
"webpack-bundle-analyzer": "^2.8.2",
132133
"webpack-dev-middleware": "^1.10.2",
133134
"webpack-hot-middleware": "^2.18.0",
135+
"webpack-node-externals": "^1.6.0",
134136
"write-file-webpack-plugin": "^4.1.0"
135137
},
136138
"babel": {

tools/webpack.config.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import path from 'path';
1111
import webpack from 'webpack';
1212
import AssetsPlugin from 'assets-webpack-plugin';
13+
import nodeExternals from 'webpack-node-externals';
1314
import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';
1415
import pkg from '../package.json';
1516

@@ -32,6 +33,12 @@ const config = {
3233
devtoolModuleFilenameTemplate: info => path.resolve(info.absoluteResourcePath),
3334
},
3435

36+
resolve: {
37+
// Allow absolute paths in imports, e.g. import Button from 'components/Button'
38+
// Keep in sync with .flowconfig and .eslintrc
39+
modules: ['node_modules', 'src'],
40+
},
41+
3542
module: {
3643
rules: [
3744
{
@@ -296,12 +303,7 @@ const serverConfig = {
296303

297304
externals: [
298305
/^\.\/assets\.json$/,
299-
(context, request, callback) => {
300-
const isExternal =
301-
request.match(/^[@a-z][a-z/.\-0-9]*$/i) &&
302-
!request.match(/\.(css|less|scss|sss)$/i);
303-
callback(null, Boolean(isExternal));
304-
},
306+
nodeExternals({ whitelist: /\.(css|less|scss|sss)$/i }),
305307
],
306308

307309
plugins: [

yarn.lock

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2538,6 +2538,13 @@ eslint-import-resolver-node@^0.2.0:
25382538
object-assign "^4.0.1"
25392539
resolve "^1.1.6"
25402540

2541+
eslint-import-resolver-node@^0.3.0:
2542+
version "0.3.0"
2543+
resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.0.tgz#4c8c78bd64fb7f7d491261937a64fe5d7eabc41a"
2544+
dependencies:
2545+
debug "^2.2.0"
2546+
resolve "^1.2.0"
2547+
25412548
eslint-loader@^1.7.1:
25422549
version "1.7.1"
25432550
resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.7.1.tgz#50b158dd6272dcefb97e984254837f81a5802ce0"
@@ -6339,7 +6346,7 @@ resolve-pathname@^2.0.0:
63396346
version "2.1.0"
63406347
resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.1.0.tgz#e8358801b86b83b17560d4e3c382d7aef2100944"
63416348

6342-
resolve@^1.1.6, resolve@^1.1.7:
6349+
resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0:
63436350
version "1.3.3"
63446351
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
63456352
dependencies:
@@ -7476,6 +7483,10 @@ webpack-hot-middleware@^2.18.0:
74767483
querystring "^0.2.0"
74777484
strip-ansi "^3.0.0"
74787485

7486+
webpack-node-externals@^1.6.0:
7487+
version "1.6.0"
7488+
resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz#232c62ec6092b100635a3d29d83c1747128df9bd"
7489+
74797490
webpack-sources@^0.2.3:
74807491
version "0.2.3"
74817492
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb"

0 commit comments

Comments
 (0)