diff --git a/compiler/taglib-finder/index.js b/compiler/taglib-finder/index.js index abd6c7b12..8b2128d39 100644 --- a/compiler/taglib-finder/index.js +++ b/compiler/taglib-finder/index.js @@ -20,6 +20,9 @@ var nodePath = require('path'); var fs = require('fs'); var lassoPackageRoot = require('lasso-package-root'); var resolveFrom = require('resolve-from'); +var scanTagsDir = require('../taglib-loader/scanTagsDir'); +var Taglib = require('../taglib-loader/Taglib'); +var DependencyChain = require('../taglib-loader/DependencyChain'); var existsCache = {}; var findCache = {}; @@ -112,13 +115,20 @@ function find(dirname, registeredTaglibs) { } - // First walk up the directory tree looking for marko.json files + // First walk up the directory tree looking for marko.json files or components/ directories let curDirname = dirname; while(true) { let taglibPath = nodePath.join(curDirname, 'marko.json'); if (existsCached(taglibPath) && !excludedDirs[curDirname]) { - var taglib = taglibLoader.load(taglibPath); + let taglib = taglibLoader.load(taglibPath); helper.addTaglib(taglib); + } else { + let componentPath = nodePath.join(curDirname, 'components'); + if (existsCached(componentPath) && !excludedDirs[curDirname] && !helper.alreadyAdded(componentPath)) { + let taglib = new Taglib(componentPath); + scanTagsDir(componentPath, nodePath.dirname(componentPath), './components', taglib, new DependencyChain([componentPath])); + helper.addTaglib(taglib); + } } if (curDirname === rootDirname) { @@ -175,4 +185,4 @@ exports.reset = reset; exports.find = find; exports.clearCache = clearCache; exports.excludeDir = excludeDir; -exports.excludePackage = excludePackage; +exports.excludePackage = excludePackage; \ No newline at end of file diff --git a/test/autotests/render/custom-tag-autodiscover/components/test-hello/template.marko b/test/autotests/render/custom-tag-autodiscover/components/test-hello/template.marko new file mode 100644 index 000000000..d49ee85c4 --- /dev/null +++ b/test/autotests/render/custom-tag-autodiscover/components/test-hello/template.marko @@ -0,0 +1 @@ +