Resolve templateUrl
and styleUrls
in Angular2 components.
$ npm install --save angular2-inline-template-style
Just clone the repository and run:
npm install
npm link
Linking requires administration rights, e.g. sudo on Mac. After the package has been linked, you should be able to call ng2-inline from command line.
/* component.css */
h1 {
color: #ff0000;
}
/* component.html */
<h1>Hello World</h1>
const ng2Inline = require('angular2-inline-template-style');
let content = `
import {Component} from 'angular2/core';
@Component({
selector: 'foo',
templateUrl: 'component.html'
styleUrls: ['component.css']
})
export class ComponentX {
constructor() {}
}
`;
ng2Inline(content, {});
// Output
import {Component} from 'angular2/core';
@Component({
selector: 'foo',
template: '<h1>Hello World</h1>',
styles: ['h1 { color: #ff0000; }']
})
export class ComponentX {
constructor() {}
}
Type: string
The file content to be processed.
Type: string
Default: './'
Base folder for templates and stylesheet files.
Type: boolean
Default: false
Use html-min and clean-css to compress the templates before they are inlined.
Type: string[]
Default: []
Alternate folder paths for node-sass to search for @imports
Use node-sass
ng2-inline [--outDir|-o] [--base|-b] [--relative|-r] [--flatten|-f] [--up|-u <count>] [--compress|-c] [--watch|-w] [--sourceOverwrite|-s] <path glob>
- --flatten: remove parent directories from source locations (all output is written to --outDir)
- --up : remove
count
leading folders from the source locations when writing to --outDir - --base: as above
- --compress: as above
- --watch: runs chokidar on the glob and on change runs a single file inline
- --sourceOverwrite: allows overwriting input .js files with the respective output file. This only works in case --outDir is not set.
- --relative: keeps the relative path
- --silent: output only errors
ng2-inline -o dist -f -b src/components "src/components/**/*.js"
It will take all .js files (recursively) from src/components
and insert template/style URLs, found relative to src/components
, and output them to ./dist/
with leading paths removed.
Important! note that glob pattern "src/components/**/*.js"
is surrounded with quotation marks. Without it, only a single file will get matched and passed down to ng2-inline
.
Help wanted for implementing:
- Jade
-
Lessthanks @synarque -
Scss/Sassthanks @dfenstermaker -
Relative file path -
Grunt pluginthanks @m-architek -
Gulp pluginthanks @dfenstermaker -
CLIthanks @jiminys -
Compressionthanks @jiminys
MIT