Skip to content

Chain-to loader for webpack that inlines all html and style's in angular2 components.

License

Notifications You must be signed in to change notification settings

TheLarkInn/angular2-template-loader

Repository files navigation

angular2-template-loader

Chain-to loader for webpack that inlines all html and style's in angular components.

Build Status Coverage Taylor Swift

Quick Links

Installation

Install the webpack loader fromnpm.

  • npm install angular2-template-loader --save-dev

Chain theangular2-template-loaderto your currently used typescript loader.

loaders:['awesome-typescript-loader','angular2-template-loader'],

Requirements

To be able to use the template loader you must have a loader registered, which can handle.htmland.cssfiles.

The most recommended loader israw-loader

This loader allows you to decouple templates from the component file and maintain AoT compilation. This is particularly useful when building complex components that have large templates.

Example Usage

Webpack

Here is an example markup of thewebpack.config.js,which chains theangular2-template-loaderto thetsloader

module:{
loaders:[
{
test:/\.ts$/,
loaders:['awesome-typescript-loader','angular2-template-loader?keepUrl=true'],
exclude:[/\.(spec|e2e)\.ts$/]
},
/* Embed files. */
{
test:/\.(html|css)$/,
loader:'raw-loader',
exclude:/\.async\.(html|css)$/
},
/* Async loading. */
{
test:/\.async\.(html|css)$/,
loaders:['file?name=[name].[hash].[ext]','extract']
}
]
}

Before

@Component({
selector:'awesome-button',
template:'button.template.html',
styles:['button.style.css']
})
exportclassAwesomeButtonComponent{}

After (before it is bundled into your webpack'd application)

@Component({
selector:'awesome-button',
template:require('./button.template.html'),
styles:[require('./button.style.css')]
})
exportclassAwesomeButtonComponent{}

How does it work

Theangular2-template-loadersearches fortemplateUrlandstyleUrlsdeclarations inside of the Angular 2 Component metadata and replaces the paths with the correspondingrequirestatement. IfkeepUrl=trueis added to the loader's query string,templateUrlandstyleUrlswill not be replaced bytemplateandstylerespectively so you can use a loader likefile-loader.

The generatedrequirestatements will be handled by the given loader for.htmland.jsfiles.

Common Issues

In some cases the webpack compilation will fail due to unknownrequirestatements in the source.
This is caused by theway the template loader works.

The Typescript transpiler doesn't have any typings for therequiremethod, which was generated by the loader.

We recommend the installation of type defintions, which contain a declaration of therequiremethod.

About

Chain-to loader for webpack that inlines all html and style's in angular2 components.

Resources

License

Stars

Watchers

Forks

Packages

No packages published