Giter Club home page Giter Club logo

grunt-properties's Introduction

grunt-properties Build Status

Convert java .properties files to javascript

"JavaScript isn't a great way to store configuration data. That's because the syntax is still that of a programming language, so you need to be sure you haven't introduced syntax errors. If you end up concatenating JavaScript files together, a syntax error in a single line breaks the overall application" ( Nicholas C. Zakas, Maintainable JavaScript, Writing Readable Code, O'Reilly Media, May 2012)

Getting Started

This plugin requires Grunt ~0.4.1

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-properties --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-properties');

The "properties" task

Overview

In your project's Gruntfile, add a section named properties to the data object passed into grunt.initConfig().

grunt.initConfig({
  properties: {
    page_config: {
      files: {
        'tmp/page_config.js': ['test/fixtures/page_config.properties'],
      },
    },
    page_color_config: {
      options: {
        namespace: 'mypage'
      },
      files: {
        'tmp/page_color_config.js': ['test/fixtures/page_config.properties', 'test/fixtures/page_color_config.properties'],
      },
    },
  },
})

Options

options.namespace

Type: String Default value: 'config'

Use a previously defined namespace.

Usage Examples

Default namespace config

grunt.initConfig({
  properties: {
    options: {},
    files: {
      'tmp/page_config.js': ['test/fixtures/page_config.properties'],
    },
  },
})

Customized namespace

grunt.initConfig({
  properties: {
    page_color_config: {
      options: {
        namespace: 'mypage'
      },
      files: {
        'tmp/page_color_config.js': ['test/fixtures/page_config.properties', 'test/fixtures/page_color_config.properties'],
      },
    },
  },
})

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.

Release History

  • 2013-05-22   v0.1.0   Initial release.

Credits

grunt-properties's People

Contributors

heldr avatar qianyan avatar zubb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

grunt-properties's Issues

Support for building files dynamically

Hi
I tried to use the grunt-properties task to convert all properties fieles from src/i18n to a corresponding *.json file during build.
I do not want to configure all files separatly but use a dynamic configuration as described in the Grunt Doc (http://gruntjs.com/configuring-tasks#building-the-files-object-dynamically). However when setting up the configuration like below I get an exception (indexof not available).

files: [
{
expand: true,
cwd: 'i18n/',
src: ['*/.properties'],
dest: 'build/',
ext: '.json',
extDot: 'first'
},
]

Is this kind of configuration not supported yet?

JSON

Can I convert json nested to properties with this plugin ?

Example:

{
  "a": "b",
  "c": { "d": "e" }
}

Add support for JSON output

With grunt config as follows:-

grunt.initConfig({
  properties: {
    messages: {
      options: {
        namespace: "msgs"
      },
      files: {
        "path/messages.json": ["path/messages.properties"],
      },
    },
  },
})

and message.properties file containing:-

actions.submit=Submit

Write out messages.json file containing:-

{
   "msgs": { //namespace if added 
       "actions": {
           "submit": "Submit"
       }
   }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.