https://github.com/flashios09/ember-extract-inline-templates
Search and extract ember inline templates from script file(js/ts) using the `import declarations`
https://github.com/flashios09/ember-extract-inline-templates
Last synced: 8 months ago
JSON representation
Search and extract ember inline templates from script file(js/ts) using the `import declarations`
- Host: GitHub
- URL: https://github.com/flashios09/ember-extract-inline-templates
- Owner: flashios09
- Created: 2019-11-09T20:22:14.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T00:43:20.000Z (over 3 years ago)
- Last Synced: 2024-05-01T23:23:12.621Z (about 2 years ago)
- Language: TypeScript
- Size: 761 KB
- Stars: 4
- Watchers: 3
- Forks: 2
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Extract tagged template literals
==============================================================================
Search and extract **ember inline templates** from script file(js/ts) using the `import declarations`.

Installation
------------------------------------------------------------------------------
```bash
# not published yet
yarn add ember-extract-inline-templates
```
Usage
------------------------------------------------------------------------------
API:
```ts
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.:
```js
{
"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:
```js
{
"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 the `start` key, `false` by default.
### Example
```ts
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\`
{{yield}}
\`;
interface IComponentArgs {
type: string;
value?: any;
}
class MyInputComponent extends GlimmerComponent {
type: string = 'text';
};
// @ts-ignore
export default Ember._setComponentTemplate(template, MyInputComponent);
`;
const hbs = searchAndExtractHbs(source);
console.log(hbs);
```
Output:
```hbs
{{yield}}
`
* `cd ember-extract-inline-templates`
* `yarn install`
### Linting
* `yarn lint`
### Running test
* `yarn test`