Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/andidev/gulp-ng-constant-fork

Gulp plugin for dynamic generation of angular constant modules.
https://github.com/andidev/gulp-ng-constant-fork

Last synced: 13 days ago
JSON representation

Gulp plugin for dynamic generation of angular constant modules.

Awesome Lists containing this project

README

        

gulp-ng-constant-fork
================

[![Build Status](https://travis-ci.org/andidev/gulp-ng-constant-fork.svg)](https://travis-ci.org/andidev/gulp-ng-constant-fork.svg)

## Information

Packagegulp-ng-constant-fork

Description
Plugin for dynamic generation of angular constant modules. Forked version of guzart/gulp-ng-constant with extra options.

Based of grunt-ng-constant.

Node Version
>= 0.10

## Usage

This plugin is a fork of [guzarts plugin gulp-ng-constant](https://github.com/guzart/gulp-ng-constant) so credits to him. Use this in the same way as the original plugin. This plugin was created to solve the [deps false issue](https://github.com/guzart/gulp-ng-constant/issues/11) and the problem that the [plugin cannot be called without referencing a config.json file](https://github.com/guzart/gulp-ng-constant/pull/9). Plus it also ads a interpolation option used by lodash to detect data property values to inject in the templates.

### configuration in `gulpfile.js`

_**gulpfile.js**_

var ngConstant = require('gulp-ng-constant-fork');

gulp.task('config', function () {
ngConstant({
dest: 'app.config.js',
name: 'my.module.config',
noFile: true,
deps: false,
constants: { ENV: 'dev' }
})
// Writes app.config.js to dist/ folder
.pipe(gulp.dest('dist'));
});

_**dist/app.config.js**_ _(output)_

angular.module("my.module.config")
.constant("ENV", "dev");

### configuration in `gulpfile.js`

_**gulpfile.js**_

var ngConstant = require('gulp-ng-constant-fork');

gulp.task('config', function () {
ngConstant({
dest: 'app.config.js',
name: 'my.module.config',
noFile: true,
deps: false,
interpolate: /\{%=(.+?)%\}/g,
wrap: '"use strict";\n// DO NOT EDIT THIS FILE, EDIT THE GULP TASK SETTINGS INSTEAD WHICH GENERATES THIS FILE\n<%= __ngModule %>',
constants: { ENV: 'dev' }
})
// Writes app.config.js to dist/ folder
.pipe(gulp.dest('dist'));
});

_**dist/app.config.js**_ _(output)_

"use strict";
// DO NOT EDIT THIS FILE, EDIT THE GULP TASK SETTINGS INSTEAD WHICH GENERATES THIS FILE
angular.module("my.module.config")
.constant("ENV", "dev");

### configuration in `gulpfile.js`

_**gulpfile.js**_

var ngConstant = require('gulp-ng-constant-fork');

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**_

{
"myFirstCnt": true,
"mySecondCnt": { "hello": "world" }
}

_**dist/config.js**_ _(output)_

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**_

var ngConstant = require('gulp-ng-constant-fork');

gulp.task('config', function () {
gulp.src('app/config.json')
.pipe(ngConstant())
// Writes config.js to dist/ folder
.pipe(gulp.dest('dist'));
});

_**app/config.json**_

{
"name": "my.module.config",
"deps": ["ngAnimate"],
"wrap": "commonjs",
"constants": {
"myFirstCnt": true,
"mySecondCnt": { "hello": "world" }
}
}

_**dist/config.js**_ _(output)_

module.exports = angular.module("my.module.config", ["ngAnimate"])
.constant("myFirstCnt", true)
.constant("mySecondCnt", { "hello": "world" })
.constant("myPropCnt", "hola!");

### Options

#### options.name

Type: `string`
Default: `undefined`
Overrides: `json.name`

The module name.
This property will override any `name` property defined in the input `json` file.

#### options.dest

Type: `string`
Default: `src file name or constant if noFile is true`
_optional_

The path where the generated constant module should be saved. Use to change output filename.

#### options.constants

Type: `Object | string`
Default: `undefined`
Exends/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.deps

Type: `array|boolean`
Default: `[]`
Overrides: `json.deps`
_optional_

An array that specifies the default dependencies a module should have. When your
module should not have any modules, so you can append the constants to an
already existing one, you can set deps to false.
This property will override any `deps` property defined in the input `json` file.

#### options.noFile

Type: `boolean`
Default: `false`
_optional_

Boolean that tells if the configuration should not be read from a src file.
Set this to true if the plugin is not called inside a pipe and the configuration
is not loaded from a file.

#### options.wrap

Type: `boolean|string`
Default: `false`
Available: `['amd', 'commonjs']`
_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.space

Type: `string`
Default: `'\t'`
_optional_

A string that defines how the JSON.stringify method will prettify your code.

#### options.template

Type: `string`
Default: _content of [tpls/constant.tpl.ejs](https://github.com/andidev/gulp-ng-constant-fork/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.interpolate
Type: `Regexp`
Default: `undefined` which sets the default lodash interpolation which detects `<%= dataProperty %>`

_optional_

Can be used to set the [loadash regexp](https://lodash.com/docs#templateSettings-interpolate) used to detect data property values to inject.