Grunt fails on initial run after npm install

I downloaded Roots this morning from Github…downloaded the zip file via the link on the right.

I’m not changing anything in scripts.php anymore, but regardless of how many times I run grunt, it will not pick up anything in main.css. I always have to move main.min.css back into assets.

Also, I checked my WPCONFIG.PHP file and it didn’t have the development thing you mentioned.

I don’t mind using main.min.css, but if this is a problem brewing I need to figure it out.

Please elaborate on what you mean by

grunt… will not pick up anything in main.css

You should be adding CSS/LESS to a file named assets/less/main.less using the default configuration.

I apologize for not being clear.

Here’s what I mean: in assets after activating Roots and running Grunt I had a main.css file.

But if I place any styling in that file, the site doesn’t recognize it. So I looked in scripts.php at the original configuration, and saw that it was pointing to main.min.css first, and there was some type of if then statement pointing to main.css afterwards.

So, I just added main.min.css to assets, and boom. That works. It seems to ignore anything in main.css.

You should be adding CSS/LESS to a file named assets/less/main.less and undo any changes you made regarding main.css and scripts.php.

The reason you see a file called assets/css/main.css is because Roots 7.0’s new Gruntfile.js specifies two sets of JS/CSS assets for Grunt to build: one set is minified for use on live sites (e.g., main.min.css and scripts.min.js) and a second set is not minified for development and debugging purposes (e.g., main.css and scripts.js). If you define the WP_ENV variable as described a few posts up then Roots will use the unminified assets, otherwise it will use the minified assets.

So when you added CSS to main.css you were adding styles to a file that Grunt is, by default, set to overwrite during its build process.

Your CSS and LESS styles belong in assets/less/main.less and there is no need to change your scripts.php at all.

Thanks for explaining.

So I moved all of the styling into assets/less/main.less. The site lost all styling.

I then thought maybe I need to run grunt to update.

Grunt is now failing again. I’m dead in the water with Roots 7.

The VPS I’m using has multiple Roots 6.5.1 sites running fine. I’ve never had these problems with Roots before.

It looks like you might be deleting the assets/vendor/bootstrap directory entirely which is unnecessary.

Read through the docs again, especially compiling assets. This most recent go-around looks like you ran Grunt before you installed its packages.

I don’t claim to be an expert myself, and Roots 7.0 does have some new and confusing features, but I followed the directions and managed to get it up and running the first time around without any issues. It’s all in the docs.

I’m going to start over again.

Do I need to reinstall WordPress each time? Is all of this touching the WP database in any way?

No, just kill your theme directory and you should be fine.

Btw, I hope when you said

…I moved all of the styling into assets/less/main.less.

That you’re not moving styles from main.css into that file. There is no need to touch main.css directly at all ever, it’s a file that gets output by Grunt.

Cool thanks man. I’ll go through the steps and report back.

I’m completely lost on it all right now. With 6.5.1 all I had to do was enqueue a stylesheet. Now I don’t know what to do or where.

So…I’m hoping the updated docs answer the question.

Here’s what I did:

  1. Downloaded the Roots zip file from Github
  2. Copied it to my themes directory after renaming it
  3. Installed grunt globally from command line with npm install -g grunt-cli
  4. Activated the new Roots theme
  5. Navigated to the theme folder and did npm install
  6. Ran Grunt.

It fails with this:

Running "jshint:all" (jshint) task
>> 2 files lint free.

Running "less:dev" (less) task
>> FileError: '../vendor/bootstrap/less/variables.less' wasn't found in assets/less/_bootstrap.less on line 8, column 1:
>> 7 // Variables
>> 8 @import "../vendor/bootstrap/less/variables";
>> 9 @import "_variables"; // Bootstrap variable overrides and custom variables
Warning: Error compiling assets/less/main.less Use --force to continue.

Aborted due to warnings.

Can you verify whether there is a file called /vendor/bootstrap/less/variables.less in your theme directory?

That folder isn’t there.

In roots I have:

assets
lang
lib
node_modules
templates

npm install should be grabbing Bootstrap and placing it in that directory. Please paste the output from npm install.

npm http GET https://registry.npmjs.org/grunt
npm http GET https://registry.npmjs.org/grunt-contrib-jshint
npm http GET https://registry.npmjs.org/grunt-autoprefixer
npm http GET https://registry.npmjs.org/grunt-contrib-less
npm http GET https://registry.npmjs.org/grunt-contrib-concat
npm http GET https://registry.npmjs.org/grunt-contrib-uglify
npm http GET https://registry.npmjs.org/grunt-contrib-watch
npm http GET https://registry.npmjs.org/grunt-modernizr
npm http GET https://registry.npmjs.org/grunt-wp-assets
npm http GET https://registry.npmjs.org/load-grunt-tasks
npm http GET https://registry.npmjs.org/time-grunt
npm http GET https://registry.npmjs.org/bower
npm http 304 https://registry.npmjs.org/grunt-contrib-concat
npm http 304 https://registry.npmjs.org/grunt-contrib-uglify
npm http 304 https://registry.npmjs.org/grunt-contrib-watch
npm http 304 https://registry.npmjs.org/grunt-contrib-less
npm http 304 https://registry.npmjs.org/grunt-modernizr
npm http 304 https://registry.npmjs.org/load-grunt-tasks
npm http 304 https://registry.npmjs.org/time-grunt
npm http 304 https://registry.npmjs.org/bower
npm http 304 https://registry.npmjs.org/grunt
npm http 304 https://registry.npmjs.org/grunt-wp-assets
npm http 304 https://registry.npmjs.org/grunt-autoprefixer
npm http 304 https://registry.npmjs.org/grunt-contrib-jshint
npm http GET https://registry.npmjs.org/findup-sync
npm http GET https://registry.npmjs.org/multimatch
npm http GET https://registry.npmjs.org/chalk
npm http GET https://registry.npmjs.org/text-table
npm http GET https://registry.npmjs.org/hooker
npm http GET https://registry.npmjs.org/pretty-ms
npm http GET https://registry.npmjs.org/date-time
npm http 304 https://registry.npmjs.org/findup-sync
npm http 304 https://registry.npmjs.org/pretty-ms
npm http 304 https://registry.npmjs.org/chalk
npm http 304 https://registry.npmjs.org/date-time
npm http 304 https://registry.npmjs.org/text-table
npm http 304 https://registry.npmjs.org/hooker
npm http GET https://registry.npmjs.org/maxmin
npm http GET https://registry.npmjs.org/lodash
npm http GET https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/less
npm http GET https://registry.npmjs.org/autoprefixer
npm http GET https://registry.npmjs.org/diff
npm http 304 https://registry.npmjs.org/multimatch
npm http 304 https://registry.npmjs.org/lodash
npm http GET https://registry.npmjs.org/jshint
npm http 304 https://registry.npmjs.org/diff
npm http 304 https://registry.npmjs.org/less
npm http 304 https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/uglify-js
npm http 304 https://registry.npmjs.org/maxmin
npm http 304 https://registry.npmjs.org/autoprefixer
npm http 304 https://registry.npmjs.org/uglify-js
npm http GET https://registry.npmjs.org/gaze
npm http GET https://registry.npmjs.org/tiny-lr-fork
npm http 304 https://registry.npmjs.org/jshint
npm http 304 https://registry.npmjs.org/gaze
npm http 304 https://registry.npmjs.org/tiny-lr-fork
npm http GET https://registry.npmjs.org/strip-ansi
npm http GET https://registry.npmjs.org/has-color
npm http GET https://registry.npmjs.org/ansi-styles
npm http GET https://registry.npmjs.org/minimatch
npm http GET https://registry.npmjs.org/array-differ
npm http GET https://registry.npmjs.org/array-union
npm http 304 https://registry.npmjs.org/strip-ansi
npm http 304 https://registry.npmjs.org/minimatch
npm http 304 https://registry.npmjs.org/has-color
npm http 304 https://registry.npmjs.org/ansi-styles
npm http 304 https://registry.npmjs.org/array-union
npm http GET https://registry.npmjs.org/gzip-size
npm http GET https://registry.npmjs.org/pretty-bytes
npm http 304 https://registry.npmjs.org/array-differ
npm http 304 https://registry.npmjs.org/pretty-bytes
npm http 304 https://registry.npmjs.org/gzip-size
npm http GET https://registry.npmjs.org/glob
npm http 304 https://registry.npmjs.org/glob
npm http GET https://registry.npmjs.org/array-uniq
npm http GET https://registry.npmjs.org/eventemitter2
npm http GET https://registry.npmjs.org/iconv-lite
npm http GET https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/underscore.string
npm http GET https://registry.npmjs.org/which
npm http GET https://registry.npmjs.org/js-yaml
npm http GET https://registry.npmjs.org/exit
npm http GET https://registry.npmjs.org/getobject
npm http GET https://registry.npmjs.org/grunt-legacy-util
npm http GET https://registry.npmjs.org/grunt-legacy-log
npm http GET https://registry.npmjs.org/coffee-script
npm http GET https://registry.npmjs.org/colors
npm http GET https://registry.npmjs.org/dateformat
npm http GET https://registry.npmjs.org/concat-stream
npm http GET https://registry.npmjs.org/zlib-browserify
npm http 304 https://registry.npmjs.org/array-uniq
npm http 304 https://registry.npmjs.org/nopt
npm http 304 https://registry.npmjs.org/underscore.string
npm http 304 https://registry.npmjs.org/which
npm http 304 https://registry.npmjs.org/eventemitter2
npm http 304 https://registry.npmjs.org/exit
npm http 304 https://registry.npmjs.org/js-yaml
npm http 304 https://registry.npmjs.org/rimraf
npm http 304 https://registry.npmjs.org/grunt-legacy-util
npm http 304 https://registry.npmjs.org/getobject
npm http 304 https://registry.npmjs.org/grunt-legacy-log
npm http 304 https://registry.npmjs.org/colors
npm http 304 https://registry.npmjs.org/coffee-script
npm http 304 https://registry.npmjs.org/iconv-lite
npm http 304 https://registry.npmjs.org/dateformat
npm http 304 https://registry.npmjs.org/concat-stream
npm http 304 https://registry.npmjs.org/zlib-browserify
npm http GET https://registry.npmjs.org/globule
npm http 304 https://registry.npmjs.org/globule
npm http GET https://registry.npmjs.org/lru-cache
npm http GET https://registry.npmjs.org/sigmund
npm http GET https://registry.npmjs.org/abbrev
npm http 304 https://registry.npmjs.org/sigmund
npm http 304 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/noptify
npm http GET https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/qs
npm http GET https://registry.npmjs.org/faye-websocket
npm http GET https://registry.npmjs.org/tape
npm http GET https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/typedarray
npm http GET https://registry.npmjs.org/readable-stream
npm http 304 https://registry.npmjs.org/lru-cache
npm http 304 https://registry.npmjs.org/qs
npm http 304 https://registry.npmjs.org/inherits
npm http 304 https://registry.npmjs.org/tape
npm http 304 https://registry.npmjs.org/typedarray
npm http 304 https://registry.npmjs.org/readable-stream
npm http 304 https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/faye-websocket
npm http 304 https://registry.npmjs.org/noptify
npm http GET https://registry.npmjs.org/promised-io
npm http GET https://registry.npmjs.org/request
npm http GET https://registry.npmjs.org/graceful-fs
npm http 304 https://registry.npmjs.org/graceful-fs
npm http 304 https://registry.npmjs.org/promised-io
npm http 304 https://registry.npmjs.org/request
npm http GET https://registry.npmjs.org/postcss
npm http GET https://registry.npmjs.org/caniuse-db
npm http GET https://registry.npmjs.org/fs-extra
npm http 304 https://registry.npmjs.org/fs-extra
npm http 304 https://registry.npmjs.org/postcss
npm http GET https://registry.npmjs.org/core-util-is
npm http GET https://registry.npmjs.org/isarray
npm http 304 https://registry.npmjs.org/caniuse-db
npm http GET https://registry.npmjs.org/string_decoder
npm http 304 https://registry.npmjs.org/isarray
npm http 304 https://registry.npmjs.org/string_decoder
npm http 304 https://registry.npmjs.org/core-util-is
npm http GET https://registry.npmjs.org/argparse
npm http GET https://registry.npmjs.org/esprima
npm http 304 https://registry.npmjs.org/argparse
npm http 304 https://registry.npmjs.org/esprima
npm http GET https://registry.npmjs.org/defined
npm http GET https://registry.npmjs.org/jsonify
npm http GET https://registry.npmjs.org/deep-equal
npm http 304 https://registry.npmjs.org/defined
npm http 304 https://registry.npmjs.org/deep-equal
npm http 304 https://registry.npmjs.org/jsonify
npm http GET https://registry.npmjs.org/jsonfile
npm http GET https://registry.npmjs.org/ncp
npm http GET https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/ncp
npm http 304 https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/jsonfile
npm http GET https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/uglify-to-browserify
npm http GET https://registry.npmjs.org/source-map
npm http 304 https://registry.npmjs.org/uglify-to-browserify
npm http 304 https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/source-map
npm http GET https://registry.npmjs.org/base64-js
npm http 304 https://registry.npmjs.org/source-map
npm http 304 https://registry.npmjs.org/base64-js
npm http 304 https://registry.npmjs.org/source-map
npm http GET https://registry.npmjs.org/minimist
npm http 304 https://registry.npmjs.org/minimist
npm http GET https://registry.npmjs.org/underscore
npm http 304 https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/forever-agent
npm http GET https://registry.npmjs.org/tunnel-agent
npm http GET https://registry.npmjs.org/http-signature
npm http GET https://registry.npmjs.org/hawk
npm http GET https://registry.npmjs.org/aws-sign
npm http GET https://registry.npmjs.org/oauth-sign
npm http GET https://registry.npmjs.org/cookie-jar
npm http GET https://registry.npmjs.org/node-uuid
npm http GET https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/form-data
npm http GET https://registry.npmjs.org/json-stringify-safe
npm http 304 https://registry.npmjs.org/http-signature
npm http 304 https://registry.npmjs.org/forever-agent
npm http 304 https://registry.npmjs.org/oauth-sign
npm http GET https://registry.npmjs.org/wordwrap
npm http 304 https://registry.npmjs.org/tunnel-agent
npm http 304 https://registry.npmjs.org/node-uuid
npm http 304 https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/form-data
npm http 304 https://registry.npmjs.org/json-stringify-safe
npm http 304 https://registry.npmjs.org/wordwrap
npm http 304 https://registry.npmjs.org/hawk
npm http 304 https://registry.npmjs.org/cookie-jar
npm http 304 https://registry.npmjs.org/aws-sign
npm http GET https://registry.npmjs.org/combined-stream
npm http 304 https://registry.npmjs.org/combined-stream
npm http GET https://registry.npmjs.org/assert-plus
npm http GET https://registry.npmjs.org/asn1
npm http GET https://registry.npmjs.org/ctype
npm http 304 https://registry.npmjs.org/ctype
npm http 304 https://registry.npmjs.org/assert-plus
npm http 304 https://registry.npmjs.org/asn1
npm http GET https://registry.npmjs.org/amdefine
npm http 304 https://registry.npmjs.org/amdefine
npm http GET https://registry.npmjs.org/delayed-stream
npm http 304 https://registry.npmjs.org/delayed-stream
npm http GET https://registry.npmjs.org/archy
npm http GET https://registry.npmjs.org/bower-config
npm http GET https://registry.npmjs.org/bower-endpoint-parser
npm http GET https://registry.npmjs.org/bower-json
npm http GET https://registry.npmjs.org/bower-logger
npm http GET https://registry.npmjs.org/bower-registry-client
npm http GET https://registry.npmjs.org/cardinal
npm http GET https://registry.npmjs.org/chmodr
npm http GET https://registry.npmjs.org/decompress-zip
npm http GET https://registry.npmjs.org/fstream
npm http GET https://registry.npmjs.org/fstream-ignore
npm http GET https://registry.npmjs.org/handlebars
npm http GET https://registry.npmjs.org/inquirer
npm http GET https://registry.npmjs.org/insight
npm http GET https://registry.npmjs.org/is-root
npm http GET https://registry.npmjs.org/junk
npm http GET https://registry.npmjs.org/lockfile
npm http GET https://registry.npmjs.org/mout
npm http 304 https://registry.npmjs.org/bower-config
npm http 304 https://registry.npmjs.org/archy
npm http GET https://registry.npmjs.org/opn
npm http GET https://registry.npmjs.org/osenv
npm http GET https://registry.npmjs.org/p-throttler
npm http GET https://registry.npmjs.org/promptly
npm http GET https://registry.npmjs.org/q
npm http 304 https://registry.npmjs.org/bower-logger
npm http 304 https://registry.npmjs.org/bower-json
npm http 304 https://registry.npmjs.org/bower-registry-client
npm http GET https://registry.npmjs.org/request-progress
npm http GET https://registry.npmjs.org/retry
npm http GET https://registry.npmjs.org/semver
npm http GET https://registry.npmjs.org/shell-quote
npm http GET https://registry.npmjs.org/stringify-object
npm http GET https://registry.npmjs.org/tar
npm http GET https://registry.npmjs.org/tmp
npm http GET https://registry.npmjs.org/update-notifier
npm http 304 https://registry.npmjs.org/cardinal
npm http 304 https://registry.npmjs.org/chmodr
npm http 304 https://registry.npmjs.org/bower-endpoint-parser
npm http 304 https://registry.npmjs.org/decompress-zip
npm http 304 https://registry.npmjs.org/fstream
npm http 304 https://registry.npmjs.org/fstream-ignore
npm http 304 https://registry.npmjs.org/handlebars
npm http 304 https://registry.npmjs.org/inquirer
npm http 304 https://registry.npmjs.org/insight
npm http 304 https://registry.npmjs.org/is-root
npm http 304 https://registry.npmjs.org/junk
npm http 304 https://registry.npmjs.org/lockfile
npm http 304 https://registry.npmjs.org/mout
npm http 304 https://registry.npmjs.org/opn
npm http 304 https://registry.npmjs.org/osenv
npm http 304 https://registry.npmjs.org/p-throttler
npm http 304 https://registry.npmjs.org/promptly
npm http 304 https://registry.npmjs.org/q
npm http 304 https://registry.npmjs.org/request-progress
npm http 304 https://registry.npmjs.org/retry
npm http 304 https://registry.npmjs.org/semver
npm http 304 https://registry.npmjs.org/shell-quote
npm http 304 https://registry.npmjs.org/stringify-object
npm http 304 https://registry.npmjs.org/tar
npm http 304 https://registry.npmjs.org/tmp
npm http 304 https://registry.npmjs.org/update-notifier
npm http GET https://registry.npmjs.org/configstore
npm http GET https://registry.npmjs.org/object-assign
npm http GET https://registry.npmjs.org/lodash.debounce
npm http GET https://registry.npmjs.org/configstore
npm http 304 https://registry.npmjs.org/configstore
npm http 304 https://registry.npmjs.org/configstore
npm http 304 https://registry.npmjs.org/object-assign
npm http 304 https://registry.npmjs.org/lodash.debounce
npm http GET https://registry.npmjs.org/throttleit
npm http GET https://registry.npmjs.org/hoek
npm http GET https://registry.npmjs.org/boom
npm http GET https://registry.npmjs.org/cryptiles
npm http GET https://registry.npmjs.org/sntp
npm http 304 https://registry.npmjs.org/throttleit
npm http 304 https://registry.npmjs.org/cryptiles
npm http 304 https://registry.npmjs.org/hoek
npm http 304 https://registry.npmjs.org/sntp
npm http GET https://registry.npmjs.org/read
npm http 304 https://registry.npmjs.org/boom
npm http 304 https://registry.npmjs.org/read
npm http GET https://registry.npmjs.org/array-filter
npm http GET https://registry.npmjs.org/array-reduce
npm http GET https://registry.npmjs.org/array-map
npm http 304 https://registry.npmjs.org/array-map
npm http GET https://registry.npmjs.org/uuid
npm http 304 https://registry.npmjs.org/uuid
npm http 304 https://registry.npmjs.org/array-filter
npm http 304 https://registry.npmjs.org/array-reduce
npm http GET https://registry.npmjs.org/intersect
npm http GET https://registry.npmjs.org/deep-extend
npm http GET https://registry.npmjs.org/touch
npm http GET https://registry.npmjs.org/mkpath
npm http GET https://registry.npmjs.org/binary
npm http GET https://registry.npmjs.org/lodash.now
npm http GET https://registry.npmjs.org/lodash.isfunction
npm http GET https://registry.npmjs.org/lodash.isobject
npm http 304 https://registry.npmjs.org/mkpath
npm http 304 https://registry.npmjs.org/touch
npm http 304 https://registry.npmjs.org/lodash.now
npm http 304 https://registry.npmjs.org/lodash.isfunction
npm http 304 https://registry.npmjs.org/lodash.isobject
npm http 304 https://registry.npmjs.org/deep-extend
npm http 304 https://registry.npmjs.org/intersect
npm http 304 https://registry.npmjs.org/binary
npm http GET https://registry.npmjs.org/through
npm http GET https://registry.npmjs.org/cli-color
npm http GET https://registry.npmjs.org/mute-stream
npm http GET https://registry.npmjs.org/readline2
npm http 304 https://registry.npmjs.org/through
npm http GET https://registry.npmjs.org/mute-stream
npm http 304 https://registry.npmjs.org/mute-stream
npm http 304 https://registry.npmjs.org/cli-color
npm http 304 https://registry.npmjs.org/readline2
npm http GET https://registry.npmjs.org/aws-sign2
npm http GET https://registry.npmjs.org/tough-cookie
npm http 304 https://registry.npmjs.org/mute-stream
npm http 304 https://registry.npmjs.org/aws-sign2
npm http 304 https://registry.npmjs.org/tough-cookie
npm http GET https://registry.npmjs.org/lodash._isnative
npm http GET https://registry.npmjs.org/lodash._objecttypes
npm http 304 https://registry.npmjs.org/lodash._objecttypes
npm http 304 https://registry.npmjs.org/lodash._isnative
npm http GET https://registry.npmjs.org/once
npm http 304 https://registry.npmjs.org/once
npm http GET https://registry.npmjs.org/request-replay
npm http 304 https://registry.npmjs.org/request-replay
npm http GET https://registry.npmjs.org/redeyed
npm http GET https://registry.npmjs.org/ansicolors
npm http 304 https://registry.npmjs.org/ansicolors
npm http 304 https://registry.npmjs.org/redeyed
npm http GET https://registry.npmjs.org/block-stream
npm http 304 https://registry.npmjs.org/block-stream
npm http GET https://registry.npmjs.org/memoizee
npm http GET https://registry.npmjs.org/timers-ext
npm http GET https://registry.npmjs.org/d
npm http GET https://registry.npmjs.org/es5-ext
npm http 304 https://registry.npmjs.org/timers-ext
npm http 304 https://registry.npmjs.org/d
npm http 304 https://registry.npmjs.org/memoizee
npm http 304 https://registry.npmjs.org/es5-ext
npm http GET https://registry.npmjs.org/chainsaw
npm http GET https://registry.npmjs.org/buffers
npm http 304 https://registry.npmjs.org/buffers
npm http 304 https://registry.npmjs.org/chainsaw
npm http GET https://registry.npmjs.org/next-tick
npm http 304 https://registry.npmjs.org/next-tick
npm http GET https://registry.npmjs.org/traverse
npm http 304 https://registry.npmjs.org/traverse
npm http GET https://registry.npmjs.org/punycode
npm http 304 https://registry.npmjs.org/punycode
npm http GET https://registry.npmjs.org/event-emitter
npm http GET https://registry.npmjs.org/event-emitter
npm http GET https://registry.npmjs.org/lru-queue
npm http 304 https://registry.npmjs.org/event-emitter
npm http 304 https://registry.npmjs.org/event-emitter
npm http GET https://registry.npmjs.org/minimatch
npm http GET https://registry.npmjs.org/cli
npm http GET https://registry.npmjs.org/htmlparser2
npm http GET https://registry.npmjs.org/console-browserify
npm http GET https://registry.npmjs.org/strip-json-comments
npm http GET https://registry.npmjs.org/shelljs
npm http 304 https://registry.npmjs.org/lru-queue
npm http 304 https://registry.npmjs.org/console-browserify
npm http 304 https://registry.npmjs.org/shelljs
npm http 304 https://registry.npmjs.org/strip-json-comments
npm http 304 https://registry.npmjs.org/minimatch
npm http 304 https://registry.npmjs.org/cli
npm http 304 https://registry.npmjs.org/htmlparser2
npm http GET https://registry.npmjs.org/date-now
npm http 304 https://registry.npmjs.org/date-now
npm http GET https://registry.npmjs.org/uglify-js
npm http 304 https://registry.npmjs.org/uglify-js
npm http GET https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/underscore.string
npm http 304 https://registry.npmjs.org/underscore.string
npm http 304 https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/domhandler
npm http GET https://registry.npmjs.org/domutils
npm http GET https://registry.npmjs.org/domelementtype
npm http GET https://registry.npmjs.org/entities
npm http 304 https://registry.npmjs.org/domelementtype
npm http 304 https://registry.npmjs.org/domhandler
npm http 304 https://registry.npmjs.org/entities
npm http 304 https://registry.npmjs.org/domutils
npm http GET https://registry.npmjs.org/inherits
npm http 304 https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/es6-iterator
npm http GET https://registry.npmjs.org/es6-symbol
npm http 304 https://registry.npmjs.org/es6-symbol
npm http 304 https://registry.npmjs.org/es6-iterator
npm http GET https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/request
npm http GET https://registry.npmjs.org/mkdirp
npm http GET https://registry.npmjs.org/source-map
npm http GET https://registry.npmjs.org/clean-css
npm http 304 https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/source-map
npm http 200 https://registry.npmjs.org/clean-css
npm http 304 https://registry.npmjs.org/graceful-fs
npm http 304 https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/request
npm http GET https://registry.npmjs.org/qs
npm http GET https://registry.npmjs.org/json-stringify-safe
npm http GET https://registry.npmjs.org/node-uuid
npm http GET https://registry.npmjs.org/forever-agent
npm http GET https://registry.npmjs.org/form-data
npm http GET https://registry.npmjs.org/tunnel-agent
npm http GET https://registry.npmjs.org/http-signature
npm http GET https://registry.npmjs.org/oauth-sign
npm http GET https://registry.npmjs.org/hawk
npm http 304 https://registry.npmjs.org/forever-agent
npm http 304 https://registry.npmjs.org/qs
npm http 304 https://registry.npmjs.org/tunnel-agent
npm http 304 https://registry.npmjs.org/form-data
npm http 304 https://registry.npmjs.org/http-signature
npm http 304 https://registry.npmjs.org/oauth-sign
npm http 304 https://registry.npmjs.org/hawk
npm http 304 https://registry.npmjs.org/json-stringify-safe
npm http 304 https://registry.npmjs.org/node-uuid
npm http GET https://registry.npmjs.org/commander
npm http 304 https://registry.npmjs.org/commander
npm http GET https://registry.npmjs.org/assert-plus
npm http GET https://registry.npmjs.org/asn1
npm http GET https://registry.npmjs.org/ctype
npm http GET https://registry.npmjs.org/delayed-stream
npm http GET https://registry.npmjs.org/amdefine
npm http 304 https://registry.npmjs.org/assert-plus
npm http 304 https://registry.npmjs.org/ctype
npm http 304 https://registry.npmjs.org/delayed-stream
npm http 304 https://registry.npmjs.org/amdefine
npm http 304 https://registry.npmjs.org/asn1
npm WARN cannot run in wd roots@7.0.0 bower install (wd=/srv/www/findhvacdealer.com/wp-content/themes/roots)
time-grunt@0.3.2 node_modules/time-grunt
├── date-time@0.1.1
├── pretty-ms@0.1.0
├── text-table@0.2.0
├── chalk@0.4.0 (has-color@0.1.7, ansi-styles@1.0.0, strip-ansi@0.1.1)
└── hooker@0.2.3

grunt-contrib-concat@0.4.0 node_modules/grunt-contrib-concat
└── chalk@0.4.0 (has-color@0.1.7, ansi-styles@1.0.0, strip-ansi@0.1.1)

grunt-wp-assets@0.2.6 node_modules/grunt-wp-assets
└── async@0.6.2

grunt-modernizr@0.5.2 node_modules/grunt-modernizr
├── colors@0.6.2
├── promised-io@0.3.4
├── uglify-js@1.3.3
└── request@2.27.0 (json-stringify-safe@5.0.0, forever-agent@0.5.2, aws-sign@0.3.0, qs@0.6.6, tunnel-agent@0.3.0, oauth-sign@0.3.0, cookie-jar@0.3.0, node-uuid@1.4.1, mime@1.2.11, form-data@0.1.4, http-signature@0.10.0, hawk@1.0.0)

grunt-contrib-uglify@0.5.0 node_modules/grunt-contrib-uglify
├── chalk@0.4.0 (has-color@0.1.7, ansi-styles@1.0.0, strip-ansi@0.1.1)
├── maxmin@0.1.0 (pretty-bytes@0.1.1, gzip-size@0.1.1)
├── uglify-js@2.4.15 (uglify-to-browserify@1.0.2, async@0.2.10, optimist@0.3.7, source-map@0.1.34)
└── lodash@2.4.1

grunt-autoprefixer@0.8.1 node_modules/grunt-autoprefixer
├── diff@1.0.8
├── chalk@0.4.0 (has-color@0.1.7, ansi-styles@1.0.0, strip-ansi@0.1.1)
└── autoprefixer@2.1.0 (fs-extra@0.10.0, postcss@1.0.0, caniuse-db@1.0.20140702)

grunt-contrib-jshint@0.10.0 node_modules/grunt-contrib-jshint
├── hooker@0.2.3
└── jshint@2.5.2 (strip-json-comments@0.1.3, underscore@1.6.0, console-browserify@1.1.0, exit@0.1.2, minimatch@0.3.0, shelljs@0.3.0, cli@0.6.3, htmlparser2@3.7.3)

grunt-contrib-watch@0.6.1 node_modules/grunt-contrib-watch
├── async@0.2.10
├── tiny-lr-fork@0.0.5 (debug@0.7.4, faye-websocket@0.4.4, noptify@0.0.3, qs@0.5.6)
├── gaze@0.5.1 (globule@0.1.0)
└── lodash@2.4.1

grunt@0.4.5 node_modules/grunt
├── dateformat@1.0.2-1.2.3
├── which@1.0.5
├── eventemitter2@0.4.14
├── getobject@0.1.0
├── rimraf@2.2.8
├── colors@0.6.2
├── async@0.1.22
├── grunt-legacy-util@0.2.0
├── nopt@1.0.10 (abbrev@1.0.5)
├── exit@0.1.2
├── hooker@0.2.3
├── glob@3.1.21 (inherits@1.0.0, graceful-fs@1.2.3)
├── minimatch@0.2.14 (sigmund@1.0.0, lru-cache@2.5.0)
├── lodash@0.9.2
├── coffee-script@1.3.3
├── underscore.string@2.2.1
├── iconv-lite@0.2.11
├── js-yaml@2.0.5 (esprima@1.0.4, argparse@0.1.15)
├── findup-sync@0.1.3 (glob@3.2.11, lodash@2.4.1)
└── grunt-legacy-log@0.1.1 (underscore.string@2.3.3, lodash@2.4.1)

bower@1.3.7 node_modules/bower
├── is-root@0.1.0
├── junk@0.3.0
├── stringify-object@0.2.1
├── abbrev@1.0.5
├── chmodr@0.1.0
├── which@1.0.5
├── osenv@0.1.0
├── opn@0.1.2
├── archy@0.0.2
├── lockfile@0.4.2
├── graceful-fs@3.0.2
├── rimraf@2.2.8
├── lru-cache@2.5.0
├── bower-logger@0.2.2
├── bower-endpoint-parser@0.2.2
├── chalk@0.4.0 (has-color@0.1.7, ansi-styles@1.0.0, strip-ansi@0.1.1)
├── nopt@3.0.1
├── retry@0.6.1
├── tmp@0.0.23
├── request-progress@0.3.1 (throttleit@0.0.2)
├── q@1.0.1
├── shell-quote@1.4.1 (array-filter@0.0.1, array-map@0.0.0, array-reduce@0.0.0, jsonify@0.0.0)
├── semver@2.3.1
├── p-throttler@0.0.1 (q@0.9.7)
├── promptly@0.2.0 (read@1.0.5)
├── mkdirp@0.5.0 (minimist@0.0.8)
├── bower-json@0.4.0 (intersect@0.0.3, deep-extend@0.2.10, graceful-fs@2.0.3)
├── fstream-ignore@0.0.8 (inherits@2.0.1, minimatch@0.3.0)
├── fstream@0.1.28 (inherits@2.0.1, mkdirp@0.3.5)
├── bower-config@0.5.2 (osenv@0.0.3, graceful-fs@2.0.3, optimist@0.6.1)
├── tar@0.1.20 (inherits@2.0.1, block-stream@0.0.7)
├── glob@4.0.3 (once@1.3.0, inherits@2.0.1, minimatch@0.3.0)
├── decompress-zip@0.0.8 (nopt@2.2.1, mkpath@0.1.0, touch@0.0.2, readable-stream@1.1.13-1, binary@0.3.0)
├── request@2.36.0 (json-stringify-safe@5.0.0, forever-agent@0.5.2, aws-sign2@0.5.0, qs@0.6.6, oauth-sign@0.3.0, tunnel-agent@0.4.0, node-uuid@1.4.1, mime@1.2.11, form-data@0.1.4, tough-cookie@0.12.1, http-signature@0.10.0, hawk@1.0.0)
├── update-notifier@0.1.10 (configstore@0.3.1)
├── bower-registry-client@0.2.1 (request-replay@0.2.0, lru-cache@2.3.1, graceful-fs@2.0.3, async@0.2.10, mkdirp@0.3.5, request@2.27.0)
├── handlebars@1.3.0 (optimist@0.3.7, uglify-js@2.3.6)
├── cardinal@0.4.4 (ansicolors@0.2.1, redeyed@0.4.4)
├── mout@0.9.1
├── inquirer@0.5.1 (readline2@0.1.0, through@2.3.4, mute-stream@0.0.4, async@0.8.0, cli-color@0.3.2, lodash@2.4.1)
└── insight@0.3.1 (object-assign@0.1.2, async@0.2.10, lodash.debounce@2.4.1, request@2.27.0, configstore@0.2.3, inquirer@0.4.1)

load-grunt-tasks@0.6.0 node_modules/load-grunt-tasks
├── multimatch@0.3.0 (array-differ@0.1.0, array-union@0.1.0, minimatch@0.3.0)
└── findup-sync@0.1.3 (glob@3.2.11, lodash@2.4.1)

grunt-contrib-less@0.11.3 node_modules/grunt-contrib-less
├── async@0.2.10
├── chalk@0.4.0 (has-color@0.1.7, ansi-styles@1.0.0, strip-ansi@0.1.1)
├── maxmin@0.1.0 (pretty-bytes@0.1.1, gzip-size@0.1.1)
├── lodash@2.4.1
└── less@1.7.3 (graceful-fs@2.0.3, mime@1.2.11, mkdirp@0.3.5, clean-css@2.1.8, source-map@0.1.36, request@2.34.0)

Your problem is:

npm WARN cannot run in wd roots@7.0.0 bower install (wd=/srv/www/findhvacdealer.com/wp-content/themes/roots)

Try running bower install and paste the output.

BTW, you mentioned you’re running this on a VPS so my guess is that this is a permissions issue. Roots is not designed to be built on a remote server. This particular stage you’re experiencing difficulty with is intended to be completed locally and your final development work product should then be deployed.

See this comment.

root@galaxy-one:/srv/www/findhvacdealer.com/wp-content/themes/roots# npm install
npm WARN cannot run in wd roots@7.0.0 bower install (wd=/srv/www/findhvacdealer.                 com/wp-content/themes/roots)
root@galaxy-one:/srv/www/findhvacdealer.com/wp-content/themes/roots# ^C
root@galaxy-one:/srv/www/findhvacdealer.com/wp-content/themes/roots# bower insta                 ll

    bower ESUDO         Cannot be run with sudo
    
    Additional error details:
    Since bower is a user command, there is no need to execute it with superuser per                 missions.
    If you're having permission errors when using bower without sudo, please spend a                  few minutes learning more about how your system should work and make any necess                 ary repairs.
    
    http://www.joyent.com/blog/installing-node-and-npm
    https://gist.github.com/isaacs/579814

I’ve done this with every Roots 6.x site…I setup the VPS from scratch. Debian 7.4 and I’m even signed in as root.

This bower thing is new.

I’ve done this with every Roots 6.x site

That doesn’t make it right :wink:

So did you visit those links and read through them?

I just followed the link and doc step by step until Grunt failed.

I need to be able to deploy without depending on a local MAMP environment. If I can’t do this with Roots, I guess I need to know that. It’s just so weird…every WordPress site (over 30) has been in Roots with no problems. This theme has been amazing.

*** Update ***

I’m gonna setup a MAMP install locally and try all of this again.

Ok, but you’re using Roots in an environment it is not intended for.

Anyhow, bower install is what will install Bootstrap, which is what you’re missing, which is why Grunt is not happy.

Check this out, then do bower install, then your grunt should run just fine. If not, check this out too.