Skip to content

Webpack loader to generate an Angular constants module from values in your projects package.json file.

License

Notifications You must be signed in to change notification settings

ericmmartin/ng-package-constants-loader

Repository files navigation

ng-package-constants-loader

Webpack loader to generate an Angular constants module from values in your projects package.json file.

Installation

npm install ng-package-constants-loader --save-dev

Usage

Given a webpack config:

module: {
  rules: [
    {
      // Let's take our config file by absolute url
      test: path.resolve(__dirname + 'package.json'),
      use: {
        loader: 'ng-package-constants-loader',
        options: {
          moduleName: 'app.constants' // name of the angular module
          configKey: 'config.all', // object to pull from package.json
          wrap: 'es6' // es6, true (default), false
        }
      }
    }
  ]
}

and package.json

{
...
"config": {
  "string": "my string",
  "integer": 12345,
  "object": {"one": 2, "three": ["four"]},
  "array": ["one", 2, {"three": "four"}, [5, "six"]],
  "all": {
    "string": "my string",
    "integer": 12345,
    "object": {"one": 2, "three": ["four"]},
    "array": ["one", 2, {"three": "four"}, [5, "six"]]
  }
  ...
}

include the package.json file in your project, to be loaded by Webpack:

require('./package.json');

the loader will emit an angular module

import angular from "angular";
export default angular.module("app.constants")
  .constant("string", "my string")
  .constant("integer", 12345)
  .constant("object", {"one":2,"three":["four"]})
  .constant("array", ["one",2,{"three":"four"},[5,"six"]]);

Options

Name Type Default Description
moduleName {String} app.constants The name of the Angular Module
createModule {Boolean} true Whether or not to create a new module
configKey {String} `` The package.json property key to load. Can be dot a separated value
wrap {String} `` The format of the output. See Wrap details below

Wrap

wrap: 'es6'

The loader will output an ES6 compliant Angular Module:

import angular from "angular";
export default angular.module("app.constants", [])
  .constant("string", "my string")
  .constant("integer", 12345)
  .constant("object", {"one":2,"three":["four"]})
  .constant("array", ["one",2,{"three":"four"},[5,"six"]]);

wrap: true

The loader will output an IIFE wrapped Angular Module:

(function () {
 return angular.module("app.constants", [])
  .constant("string", "my string")
  .constant("integer", 12345)
  .constant("object", {"one":2,"three":["four"]})
  .constant("array", ["one",2,{"three":"four"},[5,"six"]]);

})();

wrap: false (or no value)

The loader will output a bare Angular Module:

angular.module("app.constants", [])
  .constant("string", "my string")
  .constant("integer", 12345)
  .constant("object", {"one":2,"three":["four"]})
  .constant("array", ["one",2,{"three":"four"},[5,"six"]]);

About

Webpack loader to generate an Angular constants module from values in your projects package.json file.

Resources

License

Stars

Watchers

Forks

Packages

No packages published