Search and extract ember inline templates from script file(js/ts) using the import declarations
.
# not published yet
yarn add ember-extract-inline-templates
API:
searchAndExtractHbs(source: string, options?: ISearchAndExtractHbsOptions): string | never;
getTemplateNodes(source: string, options?: IGetTemplateNodesOptions): ITemplateNode[];
Options:
-
hbsTagSources
- [Optional] The additional hbs tag sources used in the import declaration(s), e.g.:{ "hbs-source-with-default-export": "default", // import hbs from 'hbs-source-with-default-export'; "hbs-source-with-named-export" : "handlebars", // import { handlebars } from 'hbs-source-wth-named-export'; "hbs-source-with-renamed-export": "hbs" // import { hbs as h } from 'hbs-source-with-renamed-export'; }
Default hbs tag sources:
{ "ember-cli-htmlbars": "hbs", "htmlbars-inline-precompile": "default", "ember-cli-htmlbars-inline-precompile": "default", "@glimmerx/component": "hbs", }
-
babylonPlugins
- [Optional] The additional babylon plugins to use, e.g.[ 'typescipt', 'jsx' ]
, see: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/babylon/index.d.ts#L45.Default used babylon plugins:
[ 'flow', 'classProperties' ]
-
sortByStartKey
- [Optional] The extracted template nodes from the ast will not be ordered by their original position in the source, so we can sort them using thestart
key,false
by default.
import { searchAndExtractHbs } from 'ember-extract-inline-templates';
const source = `
import GlimmerComponent from '@glimmer/component';
// @ts-ignore
import hbs from 'ember-cli-htmlbars-inline-precompile';
const template = hbs\`
<div class="input {{this.type}}">
<label>{{yield}}</label>
<input type={{this.type}} value={{this.value}}>
</div>
\`;
interface IComponentArgs {
type: string;
value?: any;
}
class MyInputComponent extends GlimmerComponent<IComponentArgs> {
type: string = 'text';
};
// @ts-ignore
export default Ember._setComponentTemplate(template, MyInputComponent);
`;
const hbs = searchAndExtractHbs(source);
console.log(hbs);
Output:
- Add CI tool(Travis, CircleCI...)
- Add other advanced examples to README.md.
- Add other test cases.
git clone <repository-url>
cd ember-extract-inline-templates
yarn install
yarn lint
yarn test