Default installation of Yeoman is very good for development on localhost. But it's not always possible - some databases and services just can't be on localhost, even their mocks. For example: ActiveDirectory - I don't even want to imagine, how many time I'll spend to make small copy of AD on my localhost.
For deployment I use beanstalk - all I need to deploy on development server is press "git commit and push" button in IDE (I use PHPStorm because in my current projects backend is in PHP).
But before that, I have to run "grunt build" to put all results to the "dist" folder.
There is 2 ways to automate grunt builds in PHPStorm/WebStorm:
1) File Watchers - can be used, when repository contains only 1 application (because of "working directory" argument in the File Watcher settings);2) Rebuild manually by running external tool from context menu or executing "grunt build" in console;
To run grunt build in Windows console:
1) add path to nodejs folder and %APPDATA%\Roaming\npm\ in your system PATH variable2) open console in IDE (shift+ctrl+x)
3) if necessary, set working directory by "cd dir_name"
4) write "grunt.cmd build"
To create context menu "Grunt build" in Mac OS:
Settings -> External Tools -> +
Name: build
Group: Grunt
Program: grunt
Parameters: build
Working directory: $FileDir$
To create context menu "Grunt build" in Windows:
Settings -> External Tools -> +
Name: build
Group: Grunt
Program: grunt.cmd
Parameters: build
Working directory: $FileDir$
Now Grunt will rebuild our project, but it's not yet enough - names of some files will be changed and we'll
need to add these files to git (run "git add .").
To do this, I use grunt-exec. Run in apps folder:
npm install grunt-exec
then add to Gruntfile.js (before last '}' for instance):grunt.loadNpmTasks('grunt-exec');
then create 'exec' task in grunt.initConfig:now, to run this task in each build, add this line in list ofexec: {git_add:{command: 'git add .',cwd: '<%= yeoman.dist %>'}},
grunt.registerTask('build',
section. It will look something like that:That's all! :)grunt.registerTask('build', ['clean:dist','useminPrepare','concurrent:dist','concat','copy','cdnify','ngmin','cssmin','uglify','rev','usemin','exec']);
Thanks. This one works for me on Node64, Win8 Pro64 & WebStorm 7.0.3. Nice work. I needed to create a grunt.initConfig to add the exec function, and the 'build' registration had to ne before the default in grunttfile.js -- grunt.registerTask('build', 'default', ['jshint', 'requirejs', 'hashres']); then it worked like a dream.
ReplyDeleteHi valuable tutorial. Most useful your information. i would like visit again your blog
ReplyDelete