grunt-ng-annotate
Version:
Add, remove and rebuild AngularJS dependency injection annotations.
126 lines (101 loc) • 4.46 kB
Markdown
# grunt-ng-annotate
> Add, remove and rebuild AngularJS dependency injection annotations. Based on [ng-annotate](https://www.npmjs.org/package/ng-annotate).
[](https://travis-ci.org/mzgol/grunt-ng-annotate)
[](https://ci.appveyor.com/project/mzgol/grunt-ng-annotate/branch/master)
[](http://gruntjs.com/)
## Getting Started
This plugin requires Grunt.
If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
```shell
npm install grunt-ng-annotate --save-dev
```
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
```js
grunt.loadNpmTasks('grunt-ng-annotate');
```
## The "ngAnnotate" task
### Overview
In your project's Gruntfile, add a section named `ngAnnotate` to the data object passed into `grunt.initConfig()`.
```js
grunt.initConfig({
ngAnnotate: {
options: {
// Task-specific options go here.
},
your_target: {
// Target-specific file lists and/or options go here.
},
},
})
```
#### Options
The `ngAnnotate` task accepts a couple of options:
```js
{
// Tells if ngAnnotate should add annotations (true by default).
add: true|false,
// Tells if ngAnnotate should remove annotations (false by default).
remove: true|false,
// If provided, only strings matched by the regexp are interpreted as module
// names. You can provide both a regular expression and a string representing
// one. See README of ng-annotate for further details:
// https://npmjs.org/package/ng-annotate
regexp: regexp,
// Switches the quote type for strings in the annotations array to single
// ones; e.g. '$scope' instead of "$scope" (false by default).
singleQuotes: true|false,
// If ngAnnotate supports a new option that is not directly supported via
// this grunt task yet, you can pass it here. These options gets merged
// with the above specific to ngAnnotate. Options passed here have lower
// precedence to the direct ones described above.
ngAnnotateOptions: {},
}
```
Note that both `add` and `remove` options can be set to true; in such a case `ngAnnotate` first removes
annotations and then re-adds them (it can be used to check if annotations were provided correctly).
### Usage Examples
```js
grunt.initConfig({
ngAnnotate: {
options: {
singleQuotes: true,
},
app1: {
files: {
'a.js': ['a.js'],
'c.js': ['b.js'],
'f.js': ['d.js', 'e.js'],
},
},
app2: {
files: [
{
expand: true,
src: ['f.js'],
ext: '.annotated.js', // Dest filepaths will have this extension.
extDot: 'last', // Extensions in filenames begin after the last dot
},
],
},
app3: {
files: [
{
expand: true,
src: ['g.js'],
rename: function (dest, src) { return src + '-annotated'; },
},
],
},
},
});
grunt.loadNpmTasks('grunt-ng-annotate');
```
After executing `grunt ngAnnotate`, you'll get file `a.js` annotated and saved under the same name, file `b.js`
annotated and saved as `c.js` and files `d.js` and `e.js` concatenated, annotated and saved as `f.js`. Annotations
will be saved using single quotes.
An annotated version of the `f.js` file will be saved as `f.annotated.js` and an annotated version of the `g.js` file will be saved as `g.js-annotated`.
## Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed
functionality. Lint and test your code using [Grunt](http://gruntjs.com/).
## License
Copyright (c) 2014 Michał Gołębiowski. Licensed under the MIT license.