https://github.com/guzart/gulp-ng-constant
Gulp plugin for dynamic generation of angular constant modules.
https://github.com/guzart/gulp-ng-constant
angular1 gulp-plugins gulpfile
Last synced: about 1 month ago
JSON representation
Gulp plugin for dynamic generation of angular constant modules.
- Host: GitHub
- URL: https://github.com/guzart/gulp-ng-constant
- Owner: guzart
- License: mit
- Created: 2014-03-09T23:19:25.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2019-11-07T17:20:10.000Z (over 5 years ago)
- Last Synced: 2025-03-31T10:04:17.182Z (about 2 months ago)
- Topics: angular1, gulp-plugins, gulpfile
- Language: JavaScript
- Homepage:
- Size: 60.5 KB
- Stars: 109
- Watchers: 2
- Forks: 26
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
gulp-ng-constant
================[](https://npmjs.org/package/gulp-ng-constant)
[](https://npmjs.org/package/gulp-ng-constant)
[](https://npmjs.org/package/gulp-ng-constant)
[](https://travis-ci.org/guzart/gulp-ng-constant)
[](https://codeclimate.com/github/guzart/gulp-ng-constant)
[](https://gemnasium.com/guzart/gulp-ng-constant)## Information
Packagegulp-ng-constant
Description
Plugin for dynamic generation of angular constant modules.
Based of grunt-ng-constantNode Version
>= 0.10## Index
1. [Usage](#usage)
* [Configuration in gulpfile.js](#configuration-in-gulpfilejs)
* [Configuration in config.json](#configuration-in-configjson)
2. [Options](#options)
* [name](#optionsname)
* [stream](#optionsstream)
* [constants](#optionsconstants)
* [merge](#optionsmerge)
* [deps](#optionsdeps)
* [wrap](#optionswrap)
* [wrapHeader](#optionswrapheader)
* [wrapFooter](#optionswrapfooter)
* [space](#optionsspace)
* [template](#optionstemplate)
* [templatePath](#optionstemplatepath)
* [indent](#optionsindent)
3. [Examples](#examples)
* [Multiple Environments](#multiple-environments)
* [Stream](#stream)
* [YAML](#yaml)
* [ECMAScript 2015 (ES6)](#ecmascript-2015-es6)
4. [Special Thanks](#special-thanks)## Usage
### Configuration in `gulpfile.js`
_**gulpfile.js**_
```javascript
var ngConstant = require('gulp-ng-constant');gulp.task('config', function () {
gulp.src('app/config.json')
.pipe(ngConstant({
name: 'my.module.config',
deps: ['ngAnimate'],
constants: { myPropCnt: 'hola!' },
wrap: 'amd',
}))
// Writes config.js to dist/ folder
.pipe(gulp.dest('dist'));
});
```_**app/config.json**_
```json
{
"myFirstCnt": true,
"mySecondCnt": { "hello": "world" }
}
```_**dist/config.js**_ _(output)_
```javascript
define(["require", "exports"], function(require, exports) {
return angular.module("my.module.config", ["ngAnimate"])
.constant("myFirstCnt", true)
.constant("mySecondCnt", { "hello": "world" })
.constant("myPropCnt", "hola!");
});
```### Configuration in `config.json`
_**gulpfile.js**_
```javascript
var ngConstant = require('gulp-ng-constant');gulp.task('config', function () {
gulp.src('app/config.json')
.pipe(ngConstant())
// Writes config.js to dist/ folder
.pipe(gulp.dest('dist'));
});
```_**app/config.json**_
```json
{
"name": "my.module.config",
"deps": ["ngAnimate"],
"wrap": "commonjs",
"constants": {
"myFirstCnt": true,
"mySecondCnt": { "hello": "world" }
}
}
```_**dist/config.js**_ _(output)_
```javascript
module.exports = angular.module("my.module.config", ["ngAnimate"])
.constant("myFirstCnt", true)
.constant("mySecondCnt", { "hello": "world" })
.constant("myPropCnt", "hola!");
```## Options
#### options.name
Type: `string`
Default: `filename` or `"ngConstants"`
Overrides: `json.name`
_optional_The module name.
This property will override any `name` property defined in the input `json` file. The default name when used as a transform stream (i.e. regular plugin) is the passed file name. When [options.stream](#optionsstream) is `true` the default name is `"ngConstants"`.#### options.stream
Type: `boolean`
Default: `false`
_optional_If true it returns a new gulp stream, which can then be piped other gulp plugins
([Example](#stream)).#### options.constants
Type: `Object | string`
Default: `undefined`
Extends/Overrides: `json.constants`Constants to defined in the module.
Can be a `JSON` string or an `Object`.
This property extends the one defined in the input `json` file. If there are
properties with the same name, this properties will override the ones from the
input `json` file.#### options.merge
Type: `boolean`
Default: `false`
_optional_This applies to constants of the Object type.
If true the constants of type Object from the input file and the constants
from the configuration will be merged.#### options.deps
Type: `array|boolean`
Default: `[]`
Overrides: `json.deps`
_optional_An array that specifies the default dependencies a module should have. To add the constants to an existing module, you can set it to `false`.
This property will override any `deps` property defined in the input `json` file.#### options.wrap
Type: `boolean|string`
Default: `'es6'`
Available: `[false, 'amd', 'commonjs', 'es6']`
_optional_A boolean to active or deactive the automatic wrapping.
A string who will wrap the result of file, use the
`<%= __ngModule %>` variable to indicate where to put the generated
module content.
A string with 'amd' that wraps the module as an AMD module,
compatible with RequireJS#### options.wrapHeader
Type: `string`
Default: `null`
_optional_A string that is prepended to the wrapper.
#### options.wrapFooter
Type: `string`
Default: `null`
_optional_A string that is appended to the wrapper.
#### options.space
Type: `string`
Default: `null`
_optional_A string that defines how the JSON.stringify method will prettify your code, e.g. `'\t'`, `' '`
#### options.template
Type: `string`
Default: _content of [tpls/constant.tpl.ejs](https://github.com/guzart/gulp-ng-constant/blob/master/tpls/constant.tpl.ejs)_
_optional_EJS template to apply when creating the output configuration file. The following variables
are passed to the template during render:* `moduleName`: the module name (`string`)
* `deps`: the module dependencies (`array`)
* `constants`: the module constants (`array`)
* where a `constantObj` is an object with a `name` and a `value`, both `strings`.#### options.templatePath
Type: `string`
Default: `'tpls/constant.tpl.ejs'`
_optional_Location of a custom template file for creating the output configuration file. Defaults to the provided constants template file if none provided.
#### options.indent
Type: `string`
Default: `''` (empty string)
_optional_A string that is used to indent the `.constant()` lines in the generated file. Useful only for
formatting the output file.## Examples
### Multiple Environments
_**config.json**_
```json
{
"development": { "greeting": "Sup!" },
"production": { "greeting": "Hello" }
}
```_**gulpfile.js**_
```javascript
var gulp = require('gulp');
var ngConstant = require('gulp-ng-constant');gulp.task('constants', function () {
var myConfig = require('./config.json');
var envConfig = myConfig[process.env];
return ngConstant({
constants: envConfig,
stream: true
})
.pipe(gulp.dest('dist'));
});```
### Stream
```javascript
var gulp = require('gulp');
var ngConstant = require('gulp-ng-constant');
var uglify = require('gulp-uglify');gulp.task('constants', function () {
var constants = { hello: 'world' };
return ngConstant({
constants: constants,
stream: true
})
.pipe(uglify())
.pipe(gulp.dest('dist'));
});
```### YAML
Just write your configuration in a YAML file and pipe it to the plugin.
_**config.yml**_
```yaml
greeting: Merry Christmas!
seasons:
- Winter
- Spring
- Summer
- Fall
```_**gulpfile.js**_
```javascript
var gulp = require('gulp');
var ngConstant = require('gulp-ng-constant');gulp.task('constants', function () {
gulp.src('app/config.yml')
.pipe(ngConstant())
.pipe(gulp.dest('dist'));
});
```### ECMAScript 2015 (ES6)
_**envs.json**_
```json
{
"development": {
"ENV": {
"KEY": "secret",
"API_URL": "http://localhost/"
}
},
"production": {
"ENV": {
"KEY": "superSecret",
"API_URL": "http://example.com/"
}
}
}
```_**gulpfile.babel.js**_
```javascript
import gulp from 'gulp';
import rename from 'gulp-rename';
import ngConstant from 'gulp-ng-constant';gulp.task('constants', function () {
var myConfig = require('./envs.json');
var envConfig = myConfig[process.env];
return ngConstant({
name: "app.env",
constants: envConfig,
stream: true,
wrap: "es6"
})
.pipe(rename('env.js'))
.pipe(gulp.dest('dist'));
});```
_**app.js**_
```javascript
'use strict';import angular from 'angular';
import env from 'env';let app = angular.module('app', [env.name])
.factory('someRepository', function($http, ENV) {
//Just to illustrate
$http.get(ENV.API_URL);
});export default app;
```
## Special Thanks
@alexeygolev, @sabudaye, @ojacquemart, @lukehorvat, @rimian, @andidev, @dotDeeka, @LoicMahieu, @vladimirgamalian