diff --git a/file-system-loader.js b/file-system-loader.js index 0a3d06a..7424329 100644 --- a/file-system-loader.js +++ b/file-system-loader.js @@ -1,6 +1,7 @@ 'use strict'; var DepGraph = require('dependency-graph').DepGraph; +var nodeResolve = require('resolve'); Object.defineProperty(exports, '__esModule', { value: true @@ -64,12 +65,13 @@ var FileSystemLoader = (function () { return new Promise(function (resolve, reject) { var relativeDir = _path2['default'].dirname(relativeTo), rootRelativePath = _path2['default'].resolve(relativeDir, newPath), - fileRelativePath = _path2['default'].resolve(_path2['default'].join(_this.root, relativeDir), newPath); + rootRelativeDir = _path2['default'].join(_this.root, relativeDir), + fileRelativePath = _path2['default'].resolve(rootRelativeDir, newPath); // if the path is not relative or absolute, try to resolve it in node_modules if (newPath[0] !== '.' && newPath[0] !== '/') { try { - fileRelativePath = require.resolve(newPath); + fileRelativePath = nodeResolve.sync(newPath, { basedir: rootRelativeDir }); } catch (e) {} } diff --git a/package.json b/package.json index a00c101..05b66fe 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "dependency-graph": "^0.4.1", "object-assign": "^3.0.0", "promise-polyfill": "^2.1.0", + "resolve": "^1.1.7", "string-hash": "^1.1.0", "through": "^2.3.7" }, diff --git a/tests/cases/compose-local-node-module/expected.css b/tests/cases/compose-local-node-module/expected.css new file mode 100644 index 0000000..fa249e5 --- /dev/null +++ b/tests/cases/compose-local-node-module/expected.css @@ -0,0 +1,6 @@ +._node_modules_cool_local_styles_styles__foo { + color: #F00; +} +._styles__foo { + background: black; +} diff --git a/tests/cases/compose-local-node-module/main.js b/tests/cases/compose-local-node-module/main.js new file mode 100644 index 0000000..922a6aa --- /dev/null +++ b/tests/cases/compose-local-node-module/main.js @@ -0,0 +1,2 @@ +var styles = require('./styles.css'); +module.exports = styles; diff --git a/tests/cases/compose-local-node-module/node_modules/cool-local-styles/styles.css b/tests/cases/compose-local-node-module/node_modules/cool-local-styles/styles.css new file mode 100644 index 0000000..092b8ad --- /dev/null +++ b/tests/cases/compose-local-node-module/node_modules/cool-local-styles/styles.css @@ -0,0 +1,3 @@ +.foo { + color: #F00; +} diff --git a/tests/cases/compose-local-node-module/styles.css b/tests/cases/compose-local-node-module/styles.css new file mode 100644 index 0000000..2f17694 --- /dev/null +++ b/tests/cases/compose-local-node-module/styles.css @@ -0,0 +1,4 @@ +.foo { + composes: foo from "cool-local-styles/styles.css"; + background: black; +} diff --git a/tests/index.js b/tests/index.js index af446aa..9ea1bb7 100644 --- a/tests/index.js +++ b/tests/index.js @@ -8,7 +8,7 @@ var path = require('path'); var casesDir = path.join(__dirname, 'cases'); var cssOutFilename = 'out.css'; -var globalCases = ['compose-node-module', 'import-node-module']; +var globalCases = ['compose-node-module', 'compose-local-node-module', 'import-node-module']; function runTestCase (dir) { tape('case: ' + dir, function (t) {