UNPKG

angular1-template-loader

Version:

Backport of the Angulars webpack loader that inlines your angular templates into angular components.

77 lines (60 loc) 2.77 kB
# angular1-template-loader Chain-to loader for webpack that inlines all html in angular 1 components. This is a backport of the [angular2-template-loader](https://github.com/TheLarkInn/angular2-template-loader) ### Quick Links - [Installation](#installation) - [Requirements](#requirements) - [Example markup](#example-markup) - [Awesome Typescript Loader](#awesome-typescript-loader) - [How does it work](#how-does-it-work) ### Installation Install the webpack loader from [npm](https://www.npmjs.com/package/angular1-template-loader). - `npm install angular1-template-loader --save-dev` Chain the `angular1-template-loader` to your currently used typescript loader. ```js loaders: ['awesome-typescript-loader', 'angular1-template-loader'], ``` ### Requirements To be able to use the template loader you must have a loader registered, which can handle `.html` files. > The most recommended loader is [`ngtemplate-loader`](https://github.com/wearymonkey/ngtemplate-loader) In some cases the webpack compilation will fail due to unknown `require` statements in the source.<br/> This is caused by the [way the template loader works](#how-does-it-work). > The Typescript transpiler doesn't have any typings for the `require` method, which was generated by the loader. We recommend the installation of type defintions, which contain a declaration of the `require` method. - [@types/node](https://www.npmjs.com/package/@types/node) - [@types/requirejs](https://www.npmjs.com/package/@types/requirejs) ### Example Markup Here is an example markup of the `webpack.config.js`, which chains the `angular1-template-loader` to the `tsloader` ```js module: { rules: [ { test: /\.ts$/, loaders: ['awesome-typescript-loader', 'angular1-template-loader'], exclude: [/\.(spec|e2e)\.ts$/] }, { test: /\.html$/, loaders: ['ngtemplate?relativeTo=/src/', 'html'] } ] } ``` ### Awesome Typescript Loader When using `awesome-typescript-loader` to load your typescript files you have to set the `useWebpackText` property to `true`. Otherwise the `angular1-template-loader` is not able to chain into it. Here is an example markup (`tsconfig.json`) ```js { "compilerOptions": { ... }, "awesomeTypescriptLoaderOptions": { ... "useWebpackText": true // Allows other loaders to be chained to awesome-typescript-loader. }, } ``` ### How does it work The `angular1-template-loader` searches for `templateUrl` declarations inside of the Angular 1 Component metadata and replaces the paths with the corresponding `require` statement. The generated `require` statements will be handled by the given loader for `.html` and `.js` files.