Skip to content

Commit acfa42f

Browse files
committed
Minor clean up
1 parent 39434db commit acfa42f

File tree

1 file changed

+38
-34
lines changed

1 file changed

+38
-34
lines changed

index.js

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ var fs = require('fs');
22
var path = require('path');
33
var exts = ['.sass', '.scss'];
44

5-
function exists(file) {
5+
const exists = (file) => {
66
try {
77
fs.accessSync(file, fs.constants.F_OK);
88
return true;
@@ -11,57 +11,61 @@ function exists(file) {
1111
}
1212
}
1313

14+
const addPartialUnderscore = (file, ext) => {
15+
const basename = path.basename(file, ext);
16+
const partial = file.split(path.sep);
17+
partial.splice(-1, 1, '_' + basename + ext);
18+
return partial.join(path.sep);
19+
}
20+
21+
const resolveImportPath = (file, ext) => {
22+
const basename = path.basename(file);
23+
const fullFile = file;
24+
const isPartial = basename[0] === '_';
25+
26+
if (exists(file)) {
27+
return file;
28+
} else if (!isPartial) {
29+
const partial = addPartialUnderscore(file, ext);
30+
if (exists(partial)) return partial;
31+
}
32+
return '';
33+
}
34+
1435
module.exports = function(url, prev, done) {
1536
if (!url) return done(null);
1637

17-
var urlParts = url.split('/');
18-
var packageName = urlParts[0];
19-
var cwd = process.cwd();
38+
const urlParts = url.split('/');
39+
const packageName = urlParts[0];
40+
const cwd = process.cwd();
2041

2142
try {
2243
var packagePath = require.resolve(packageName, { paths: [cwd] });
2344
} catch (e) {
2445
return done(null);
2546
}
2647

27-
if (!packagePath) return done(null);
28-
29-
var parts = packagePath.split(path.sep);
48+
const parts = packagePath.split(path.sep);
3049

31-
for (var i = parts.length; i >= 0; i--) {
50+
for (let i = parts.length; i >= 0; i--) {
3251
if (parts[i] !== packageName || parts[i - 1] === packageName) continue;
3352

34-
var before = parts.splice(0, i + 1);
35-
var after = urlParts.splice(1);
36-
37-
var resolved = [].concat(before, after).join(path.sep);
38-
var relative = path.relative(cwd, resolved);
39-
var ext = path.extname(relative);
40-
var basename = path.basename(relative, ext);
53+
const before = parts.splice(0, i + 1);
54+
const after = urlParts.splice(1);
55+
const resolved = [...before, ...after].join(path.sep);
56+
const relative = path.relative(cwd, resolved);
57+
const ext = path.extname(relative);
4158

4259
if (ext) {
43-
if (basename[0] === '_') {
44-
if (exists(relative)) return done({ file: relative });
45-
} else {
46-
if (exists(relative)) return done({ file: relative });
47-
var partial = relative.split(path.sep);
48-
partial.splice(-1, 1, '_' + basename + ext);
49-
partial = partial.join(path.sep);
50-
if (exists(partial)) return done({ file: partial });
51-
}
60+
const importPath = resolveImportPath(relative, ext);
61+
if (importPath) return done({ file: importPath });
5262
} else {
53-
for (var j = 0; j < exts.length; j++) {
54-
if (basename[0] === '_') {
55-
if (exists(relative + exts[j])) return done({ file: relative + exts[j] });
56-
} else {
57-
if (exists(relative + exts[j])) return done({ file: relative + exts[j] });
58-
var partial = relative.split(path.sep);
59-
partial.splice(-1, 1, '_' + basename);
60-
partial = partial.join(path.sep);
61-
if (exists(partial + exts[j])) return done({ file: partial + exts[j] });
62-
}
63+
for (let j = 0; j < exts.length; j++) {
64+
const importPath = resolveImportPath(relative + exts[j], exts[j]);
65+
if (importPath) return done({ file: importPath });
6366
}
6467
}
68+
break;
6569
}
6670

6771
return done(null);

0 commit comments

Comments
 (0)