diff --git a/.gitignore b/.gitignore index 491fc35..017354f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ -node_modules +node_modules/* +!node_modules/cool-styles lib diff --git a/node_modules/cool-styles/foo.css b/node_modules/cool-styles/foo.css new file mode 100644 index 0000000..65f95db --- /dev/null +++ b/node_modules/cool-styles/foo.css @@ -0,0 +1,3 @@ +.example { + color: #F00; +} diff --git a/src/file-system-loader.js b/src/file-system-loader.js index 2f9ab02..2a3f47d 100644 --- a/src/file-system-loader.js +++ b/src/file-system-loader.js @@ -36,6 +36,14 @@ export default class FileSystemLoader { rootRelativePath = path.resolve( relativeDir, newPath ), fileRelativePath = path.resolve( path.join( this.root, relativeDir ), 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); + } + catch (e) {} + } + const tokens = this.tokensByFile[fileRelativePath] if (tokens) { return resolve(tokens) } diff --git a/test/test-cases/compose-node-module/expected.css b/test/test-cases/compose-node-module/expected.css new file mode 100644 index 0000000..0667b94 --- /dev/null +++ b/test/test-cases/compose-node-module/expected.css @@ -0,0 +1,5 @@ +._compose_node_module_cool_styles_foo__example { + color: #F00; +} +._compose_node_module_source__foo { +} diff --git a/test/test-cases/compose-node-module/expected.json b/test/test-cases/compose-node-module/expected.json new file mode 100644 index 0000000..a57448c --- /dev/null +++ b/test/test-cases/compose-node-module/expected.json @@ -0,0 +1,3 @@ +{ + "foo": "_compose_node_module_source__foo _compose_node_module_cool_styles_foo__example" +} diff --git a/test/test-cases/compose-node-module/source.css b/test/test-cases/compose-node-module/source.css new file mode 100644 index 0000000..6477b1d --- /dev/null +++ b/test/test-cases/compose-node-module/source.css @@ -0,0 +1,3 @@ +.foo { + composes: example from "cool-styles/foo.css"; +}