Code Monkey home page Code Monkey logo

grunt-contrib-django's Introduction

grunt-contrib-django

Grunt tasks to run common django commands.

NPM Build Status

Getting Started

This plugin requires Grunt ~0.4.0

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-contrib-django --save-dev

Usage

Basic gruntfile.js

'use strict';

module.exports = function (grunt) {
    grunt.initConfig({
        'django-manage': {
            options: {
                app: 'myApp',
                // only if your 'manager.py' is on another path
                manage_path: './path/to/manage/'
            },
            serve: {
		options: {
                    command: 'runserver',
                    args: [],
                    background: true, // also accepts string/regexp
                    unBuffered: true // set python env to PYTHONUNBUFFERED=1 so STDOUT doesnt get buffered and grunt can read it
                    // NOTE: background setting also sets unBuffered to true by default
		    
		}
            },
            test: {
                options: {
                    command: 'test',
                    args: [
                        'myApp/tests',
                        '--pattern=test_*.py',
                        '--settings=myApp.settings.tests'
                    ]
                }
            },
            dump: {
                options: {
                    command: 'dumpdata',
                    args: [
                        '--format=json',
                        '--indent=4',
                        'myApp',                       // return only on application's models
                        '> ./path/to/output_file.json' // save in file
                    ]
                }
            }
        },
        'django-admin': {
            options: {
                app: 'myApp'
            },
            'compile': {
                options: {
                    command: 'compilemessages',
                    verbose: true // or 'errors' for STDERROR messages only
                }
            }
        }
    });

    grunt.registerTask('test', ['django-manage:test']);
    grunt.registerTask('compile', ['django-admin:compile']);
    grunt.registerTask('dump', ['django-manage:dump']);
    grunt.registerTask('default', ['test']);

    grunt.loadNpmTasks('grunt-contrib-django');
};

Calling tasks

To run a dumpdata command you should run the following:

grunt dump // This will run 'python manage.py dumpdata --format=json --indent=4 myApp > ../path/to/output_file.json'

or

grunt django-manage:dump // which will also run 'python manage.py dumpdata --format=json --indent=4 myApp > ./path/to/output_file.json'

License

The MIT license

grunt-contrib-django's People

Contributors

guilouro avatar jaylett avatar jonman avatar machiel-b avatar nicolaspanel avatar nwhite89 avatar seanttierney avatar txels avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

grunt-contrib-django's Issues

"django-manage.test" missing

Using the README, I get the following error...

Running "django-manage:test" (django-manage) task
Verifying property django-manage.test exists in config...ERROR
>> Unable to process task.
Warning: Required config property "django-manage.test" missing. Use --force to continue.

Aborted due to warnings.

Everything that should run after `django-manage` fails

You would expect JSHint to run using this following code...

    grunt.registerTask('weird', [
        "django-manage:tests",
        "jshint",
    ]);

But this is what happens...

Running "django-manage:tests" (django-manage) task
>> Running python ./manage.py test command from /Users/@f1lt3r/my-repo/my-app
....................
----------------------------------------------------------------------
Ran 20 tests in 0.861s

OK
>> Command ran successfully

But if I swap them around like this...

    grunt.registerTask('weird', [
        "jshint",
        "django-manage:tests",
    ]);

...then both tasks run (as expected).

Running "jshint:all" (jshint) task

>> 4 files lint free.
Running "django-manage:tests" (django-manage) task
>> Running python ./manage.py test command from /Users/@f1lt3r/my-repo/my-app
....................
----------------------------------------------------------------------
Ran 20 tests in 0.861s

OK
>> Command ran successfully

Maybe I'm doing something crazy?

Any ideas appreciated.

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.