hashg
hashg

Reputation: 806

Grunt: How to change config strings for different environments

I have a python file as part of my grunt workflow. I have defined two build tasks:

When I compile 'build:dev', I want to add this line to my python file:

...
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + dbpath
...

When I compile 'build:release', I want to add this line to my python file:

...
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ['POSTGRESQL_COLORFUL_URL']
...

edit: fixed typo in code and title

Upvotes: 2

Views: 821

Answers (2)

Carlos Atencio
Carlos Atencio

Reputation: 809

I've used a plugin called grunt-string-replace that worked very well for what I needed to do. Also, I added some custom code in my Gruntfile.js to read different environment configurations and customize the build output based on that.

I detailed the full deployment script in this post: http://dev-blog.cloud-spinners.com/2014/02/complete-grunt-deployment-workflow-for.html

I hope you find that useful.

Upvotes: 0

Ewan
Ewan

Reputation: 15058

You can use grunt-sed.

It's a really useful 'find and replace' system that builds into Grunt.

From the docs:

npm install grunt-sed

Add this line to your project's Gruntfile.js:

grunt.loadNpmTasks('grunt-sed');

Then in your build:dev and build:release tasks have the following:

sed: {
    database_uri: {
      path: 'path_to_your_python.py',
      pattern: '%PATTERN_IN_YOUR_PYTHON_FILE%',
      replacement: '\'sqlite:///\' + dbpath',
    }
  }

In your python file you want replacing you must also have %PATTERN_IN_YOUR_PYTHON_FILE% to be replaced.

Upvotes: 1

Related Questions