Some time ago I came across this WordPress plugin grunt-init template by 10up and began fiddling with it to make it stick to my coding habits and to be able to quickly deploy and work on plugins and themes remotely and from any platform. A similar solution exists for themes again by 10up.
“Remotely” to me means “from a CLI” and while I love CodeKit using grunt is just easier when using a command line and, being based on Node.js, cross-platform the way I like it.
Installing Node.js and grunt
I begin by installing Node.js using either Mac or Windows installers. The installer prompts me to check my path
to be sure that the folder Node.js has been installed in has been added to the system path. In a Unix machine I use
echo $PATH
and check that /usr/local/bin
is in it. In a Windows machine I enter
echo %path%
at the Command Prompt and check that C:\path-to-node\nodejs
is among the listed folders; on both OSes installers should take care of it though. To test that Node.js has been installed properly I run the same command on Unix and Windows machines
node -v
to get Node.js installed version.
Install grunt CLI and grunt-init
To install grunt
, as detailed by official site instructions run
npm install -g grunt-cli npm install -g grunt-init
in Terminal or Command prompt. Administrator rights might be needed to complete installation so either run Command prompt with administrator rights on Windows or use sudo
on Unix.
Move grunt-init templates folder in Dropbox
When invoked grunt-init
will use a specified template to create a project scaffold. Those templates I want to keep in sync between different machines and hence have to point both Windows and Mac versions of grunt-init
to my Dropbox templates folder using symbolic links (“junctions” in Windows).
In Windows I enter
mklink c:\users\your-username.grunt-init c:\users\your-username\dropbox\path-to-grunt-init-templates-folder
I keep my templates in a folder called grunt-init_templates
in Dropbox. Then on my Mac I enter
ln -s ~/Dropbox/path-to-grunt-init-templates-folder ~/.grunt-init
Get some templates and enjoy
To get started using grunt-init
simply copy, download or clone some project templates into the templates folder and begin scaffolding as detailed in grunt-init documentation. You can, of course, make your own and my rule of thumb here is to make a template for any project I have to scaffold more than 3 times.