I'm not being critical of this project, I'm being critical of the all too common practice these days of installing a dozen or more Babel plugins to fix every problem that exists, and thus creating your own one-off language that will be unreadable in 6 months.
Babel has become the new hammer in front-end development. Everything looks like a nail.
How is:
import markdown from 'markdown-in-js';
const MyMarkdown = markdown`#Headline`;
any less clear than: import markdown from 'markdown-function-tool';
const MyMarkdown = markdown('#Headline');
It's totally explicit and actually allows compile-time validation. I really don't understand your objection.This will not be "unreadable in 6 months" any more than JSX or GraphQL are. Since I have plenty of projects that are over 6 months old using those techniques, I'm quite confident they work fine. It's not like there's any magic or implicit references going on.
import markdown from 'markdown-in-js';
var markdown = function() { }
var foo = markdown` #Header ... `;
It will incorrectly rewrite this template literal. And while they could potentially fill this hole, it doesn't change the fact this is unreadable code; there's nothing from the code that signifies it will be converted into some function calls the way that JSX or GraphQL at least have some visual signifiers.JSX and GraphQL, I'm not a fan of either, but are at least real projects with standards texts written for. This is not a criticism of this project, but the practice of installing a bunch of AST transforms to save you a couple of keystrokes creates code that reads as 1 thing, but compiles to something much different.
If you don't recognize how changing your code to mean something different based on an AST is essentially creating a one-off language, I don't know how to help you.
That is a bug and should be fixed.
I'm not sure what visual signifiers that GraphQL has which this doesn't.
It's a fairly clear pattern of what's going on. I really don't see what is "unreadable" about it.
I'm not that familiar with GraphQL, but as far as I can tell it doesn't depend on AST transforms. It seems to be a DSL that uses tagged templates. There's nothing wrong with DSLs.