-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Сouldn't get partials working well #12
Comments
Looking through the code I was found that rollup-plugin-root-import is expected to have leading slash in module id to decide either should target module to be resolved or not: // file: node_modules/rollup-plugin-root-import/dist/index.js:313-329
resolveId: function resolveId(importee, importer) {
// Don't try to resolve the entry unless we have explicit roots.
if (!importer && hadNoRoots) return;
if (importee[0] === '/') {
// If we've cached this import, don't bother trawling the filesystem
// again.
var cached = cache[importee];
if (cached) return cached;
return resolve(importee, imports).then(function (resolved) {
// Save this in the cache in case we see it again.
cache[importee] = resolved;
return resolved;
});
}
}
}; So to solve the importing issue with common partials which I describe in issue above we need to add leading slash in hbs template end remove ending slash from config <!-- src/index.html -->
<div>{{> '/_testCommonPartial' }}</div> // rollup.config.js
...
const partialRoots = [
`${__dirname}/src/common/views`
];
... But still it isn't possible to import partials by its names. I was noticed that partials always should be resolved by rollup-plugin-root-import by adding all directories which contains views into ...
var Template = runtime$2.template({"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) {
var helper;
return "<p class=\"message-body\">"
+ container.escapeExpression(((helper = (helper = helpers.message || (depth0 != null ? depth0.message : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"message","hash":{},"data":data}) : helper)))
+ "</p>";
},"useData":true});
// attempt to register partial by its full name
runtime$2.registerPartial('/Users/greebamax/Projects/rollup-hbs/src/client/js/views/_testPartial', Template);
...
return "<div>"
// invokes partial by its relative path which was used in parent layout
+ ((stack1 = container.invokePartial(partials["./_testPartial"],depth0,{"name":"./_testPartial","data":data,"helpers":helpers,"partials":partials,"decorators":container.decorators})) != null ? stack1 : "")
+ "</div>\n<div>"
+ ((stack1 = container.invokePartial(partials["/_testCommonPartial"],depth0,{"name":"/_testCommonPartial","data":data,"helpers":helpers,"partials":partials,"decorators":container.decorators})) != null ? stack1 : "")
+ "</div>";
... I believe it would be better to provide similar interface to register partials as it is used for helpers |
We had the same issue. I wrote a quick and dirty plugin based on this one. It contains a recursive function that checks for partials within a Handlebars (partial) template. https://gist.github.com/ba55ie/21045ca9f29f08fa4092798c0f31e3c1 |
Hi, I'm trying to use your plugin to manage Handlebars templates, but I'm getting the following errors when trying to build my simple app.
I followed your example but it doesn't work for me. You can see sample repo here.
_testPartial.html
is a simple partial placed next tosrc/client/js/views/message.html
_testCommonPartial.html
is a partial placed insrc/common/views/
directory.Even if I solve the problem of how the rollup resolves modules using relative paths (see below) I start getting an error on runtime.
Exceptions:
Could you please help me with what I'm doing wrong?
The text was updated successfully, but these errors were encountered: