Closed jeremypeter closed 11 years ago
I have honestly never seen that error before and have no idea how to solve it. I also couldn't reproduce the issue. I'm on OSX 10.8.3.
It looks like an issue with node, likely even libuv: https://github.com/joyent/libuv/blob/master/src/unix/fsevents.c#L200. Could you open the issue over on one of those repos?
Sorry to punt it but I don't think there is any way I could fix this issue here. Thanks!
I have the same issue.
UPDATE: I fixed the issue. I believe I was tracking too many files using the pattern "**/template.html" on every reload. So I adjusted the grunt.event object to initially watch all files, then changed the file mapping to watch only the file being changed. Doing this prevented the issue from reoccurring.
Here's my code now:
/*global module:false*/
var minimatch = require('minimatch');
module.exports = function (grunt) {
grunt.initConfig({
watch: {
template: {
files: '**/template.html',
tasks: ['inlinecss', 'htmlcompressor']
},
options: {
nospawn: true
}
},
htmlcompressor: {
compile: {
files: [{
src: 'template.html',
dest: 'email.html'
}],
options: {
type: 'html',
compressCss: true
}
}
},
inlinecss: {
main: {
files: [{
src: 'email.html',
dest: 'email.html'
}]
}
}
});
// Load tasks
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-inline-css');
grunt.loadNpmTasks('grunt-htmlcompressor');
// Default Task(s)
grunt.registerTask('default', ['watch']);
grunt.event.on('watch', function(action, filepath) {
// Current working directory
var cwd = filepath.replace(filepath.substr(filepath.lastIndexOf('/') + 1), '');
// Destination is path/to/directory/email.html
var dest = cwd + 'email.html';
// Change file mapping to match directory of changed file
grunt.config('watch.template.files', filepath);
if (minimatch(filepath, grunt.config('watch.template.files'))) {
grunt.config('inlinecss.main.files.0.src', [filepath]);
grunt.config('inlinecss.main.files.0.dest', dest);
grunt.config('htmlcompressor.compile.files.0.src', dest);
grunt.config('htmlcompressor.compile.files.0.dest', dest);
}
});
};
I'm also seeing this issue. I'll take a look at @jeremypeter's workaround for now and pop in to see if this bug is reported somewhere in the dependent projects.
Grunt-contrib-watch has also a problem with Mocha: (0 tests ... on file change). When I run the same code on Windows, no mocha problems nor FSEventStreamStart strange warnings. Now Mac sucks.
I have a theory this may have to do with how grunt watch reinitializes itself each time it runs. There may not be enough time between watches on the same resources (directories) so there's a race condition if the event stream is still be "scheduled" (not properly stopped/invalidated.)
While this might be a node-level issue, it is possible that we can do more to terminate the existing watch's subscriptions more properly before recreating the task.
Can we reopen this? I found a solution based on my previous comments. Gaze supports a close() method which closes the existing subscriptions. My fix consists of:
grunt.registerTask('watch') ...
wrapping the done() callback in a function which first loops over the Gaze instances, executing gaze.close() on each one before executing the actual Grunt task async done()I'll attempt to submit a proper pull request when I can, but feel free to test it out sooner.
@snostorm I'll give that a go. atm it will try closing the watchers upon SIGINT
but maybe it doesn't have enough time. Closing on the task done might be a better route though.
@shama I was actually hacking the latest npm version, so the watchers
array didn't exist yet (nor did the SIGINT potential fix.) I had missed this difference there between the git repo and what's published. It is funny my suggested solution was similar in many ways.
Either way, I think explicitly calling close
would be a more clean approach. Thanks!
@shama: putting the close calls in taskrun.on('end', ...)
-- which also didn't exist in my copy from npm -- also does the trick.
I figured out how to duplicate this issue. If you open a file descriptor on a file within a process then try to open another file descriptor on the same file with another process... bam:
2013-05-13 10:19 node[48447] (CarbonCore.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-21)
The problem here is sometimes file descriptors are not always closed properly with spawning child processes. So I'll need to look into that more. But at least now I know how to duplicate the issue to work on a fix for it upstream.
Oh and a way to get around this issue if you run into it is: killall -9 node
to kill all running node processes. That will close the rogue opened file descriptors.
Opened an issue for this on joyent/node#5463
When is the next planned tag?
I'm having this problem too. One observation is that I only seem to see it when a live-reload client is connected. Not sure if that makes sense - maybe the web server serving the updated file acts as the second process that triggers the error? Just a guess.
I'm getting this right now, still no actionable solution?
@reggi The only thing that works for me is killall -9 node
to ensure no other node process is still running and watching files. Then tighten up your watch patterns to try and watch as little amount of files as possible. The new version of the watch task, soon to be release, will also help avoid this as well.
@shama I ran killall -9 node
error still occurred. Defiantly need to tighten patterns. Thanks
This has just started happening for me too. Previously fixed this by upgrading node, but now I'm on 0.10.22. Trying 0.11 now.
@aexmachina It should be patched in the latest node v0.10. Would you mind posting your Gruntfile so I can try and duplicate?
It's an Ember App Kit, so the Gruntfile's spread over a whole bunch of files but here it is: https://gist.github.com/7595161
You can also see the other Grunt config files here: https://github.com/aexmachina/embify/tree/master/client/tasks
Here's the versions:
$ node -v
v0.10.22
$ npm list
app-kit@0.0.0 /Users/simonwade/dev/Workspace/spotify-collection/client
├─┬ bower@1.2.7
│ ├── abbrev@1.0.4
│ ├── archy@0.0.2
│ ├─┬ bower-config@0.5.0
│ │ ├── mout@0.6.0
│ │ └─┬ optimist@0.6.0
│ │ ├── minimist@0.0.5
│ │ └── wordwrap@0.0.2
│ ├── bower-endpoint-parser@0.2.1
│ ├─┬ bower-json@0.4.0
│ │ ├── deep-extend@0.2.6
│ │ └── intersect@0.0.3
│ ├── bower-logger@0.2.1
│ ├─┬ bower-registry-client@0.1.5
│ │ ├── async@0.2.9
│ │ ├─┬ bower-config@0.4.5
│ │ │ ├── mout@0.6.0
│ │ │ └─┬ optimist@0.6.0
│ │ │ ├── minimist@0.0.5
│ │ │ └── wordwrap@0.0.2
│ │ └── request-replay@0.2.0
│ ├─┬ cardinal@0.4.2
│ │ ├── ansicolors@0.2.1
│ │ └─┬ redeyed@0.4.2
│ │ └── esprima@1.0.4
│ ├─┬ chalk@0.2.1
│ │ ├── ansi-styles@0.2.0
│ │ └── has-color@0.1.1
│ ├── chmodr@0.1.0
│ ├─┬ fstream@0.1.24
│ │ └── inherits@2.0.1
│ ├─┬ fstream-ignore@0.0.7
│ │ ├── inherits@2.0.1
│ │ └─┬ minimatch@0.2.12
│ │ └── sigmund@1.0.0
│ ├── graceful-fs@2.0.1
│ ├─┬ handlebars@1.0.12
│ │ ├─┬ optimist@0.3.7
│ │ │ └── wordwrap@0.0.2
│ │ └─┬ uglify-js@2.3.6
│ │ ├── async@0.2.9
│ │ └─┬ source-map@0.1.30
│ │ └── amdefine@0.0.8
│ ├─┬ inquirer@0.3.4
│ │ ├── async@0.2.9
│ │ ├─┬ cli-color@0.2.3
│ │ │ ├── es5-ext@0.9.2
│ │ │ └─┬ memoizee@0.2.6
│ │ │ ├── event-emitter@0.2.2
│ │ │ └── next-tick@0.1.0
│ │ ├── lodash@1.2.1
│ │ └── mute-stream@0.0.3
│ ├── junk@0.2.1
│ ├── lru-cache@2.3.1
│ ├── mkdirp@0.3.5
│ ├── mout@0.7.1
│ ├── nopt@2.1.2
│ ├── open@0.0.4
│ ├── osenv@0.0.3
│ ├─┬ promptly@0.2.0
│ │ └─┬ read@1.0.5
│ │ └── mute-stream@0.0.4
│ ├── q@0.9.7
│ ├─┬ request@2.27.0
│ │ ├── aws-sign@0.3.0
│ │ ├── cookie-jar@0.3.0
│ │ ├── forever-agent@0.5.0
│ │ ├─┬ form-data@0.1.2
│ │ │ ├── async@0.2.9
│ │ │ └─┬ combined-stream@0.0.4
│ │ │ └── delayed-stream@0.0.5
│ │ ├─┬ hawk@1.0.0
│ │ │ ├── boom@0.4.2
│ │ │ ├── cryptiles@0.2.2
│ │ │ ├── hoek@0.9.1
│ │ │ └── sntp@0.2.4
│ │ ├─┬ http-signature@0.10.0
│ │ │ ├── asn1@0.1.11
│ │ │ ├── assert-plus@0.1.2
│ │ │ └── ctype@0.5.2
│ │ ├── json-stringify-safe@5.0.0
│ │ ├── mime@1.2.11
│ │ ├── node-uuid@1.4.1
│ │ ├── oauth-sign@0.3.0
│ │ ├── qs@0.6.5
│ │ └── tunnel-agent@0.3.0
│ ├─┬ request-progress@0.3.1
│ │ └── throttleit@0.0.2
│ ├── retry@0.6.0
│ ├── rimraf@2.2.2
│ ├── semver@2.1.0
│ ├── stringify-object@0.1.7
│ ├─┬ sudo-block@0.2.1
│ │ └─┬ chalk@0.1.1
│ │ ├── ansi-styles@0.1.2
│ │ └── has-color@0.1.1
│ ├─┬ tar@0.1.18
│ │ ├── block-stream@0.0.7
│ │ └── inherits@2.0.1
│ ├── tmp@0.0.21
│ ├─┬ unzip@0.1.9
│ │ ├─┬ binary@0.3.0
│ │ │ ├── buffers@0.1.1
│ │ │ └─┬ chainsaw@0.1.0
│ │ │ └── traverse@0.3.9
│ │ ├─┬ match-stream@0.0.2
│ │ │ └── buffers@0.1.1
│ │ ├─┬ pullstream@0.4.0
│ │ │ ├── over@0.0.5
│ │ │ └── slice-stream@0.0.0
│ │ ├── readable-stream@1.0.17
│ │ └── setimmediate@1.0.1
│ ├─┬ update-notifier@0.1.6
│ │ ├─┬ chalk@0.1.1
│ │ │ ├── ansi-styles@0.1.2
│ │ │ └── has-color@0.1.1
│ │ ├─┬ configstore@0.1.5
│ │ │ ├─┬ js-yaml@2.1.2
│ │ │ │ ├─┬ argparse@0.1.15
│ │ │ │ │ ├── underscore@1.4.4
│ │ │ │ │ └── underscore.string@2.3.3
│ │ │ │ └── esprima@1.0.4
│ │ │ └── lodash@1.3.1
│ │ ├─┬ request@2.22.0
│ │ │ ├── aws-sign@0.3.0
│ │ │ ├── cookie-jar@0.3.0
│ │ │ ├── forever-agent@0.5.0
│ │ │ ├─┬ form-data@0.0.8
│ │ │ │ ├── async@0.2.9
│ │ │ │ └─┬ combined-stream@0.0.4
│ │ │ │ └── delayed-stream@0.0.5
│ │ │ ├─┬ hawk@0.13.1
│ │ │ │ ├─┬ boom@0.4.2
│ │ │ │ │ └── hoek@0.9.1
│ │ │ │ ├── cryptiles@0.2.2
│ │ │ │ ├── hoek@0.8.5
│ │ │ │ └─┬ sntp@0.2.4
│ │ │ │ └── hoek@0.9.1
│ │ │ ├─┬ http-signature@0.10.0
│ │ │ │ ├── asn1@0.1.11
│ │ │ │ ├── assert-plus@0.1.2
│ │ │ │ └── ctype@0.5.2
│ │ │ ├── json-stringify-safe@4.0.0
│ │ │ ├── mime@1.2.11
│ │ │ ├── node-uuid@1.4.1
│ │ │ ├── oauth-sign@0.3.0
│ │ │ ├── qs@0.6.5
│ │ │ └── tunnel-agent@0.3.0
│ │ └── semver@2.0.11
│ └── which@1.0.5
├── connect-livereload@0.3.0
├─┬ glob@3.2.6
│ ├── inherits@2.0.1
│ └─┬ minimatch@0.2.12
│ ├── lru-cache@2.3.1
│ └── sigmund@1.0.0
├─┬ grunt@0.4.1
│ ├── async@0.1.22
│ ├── coffee-script@1.3.3
│ ├── colors@0.6.2
│ ├── dateformat@1.0.2-1.2.3
│ ├── eventemitter2@0.4.13
│ ├─┬ findup-sync@0.1.2
│ │ └── lodash@1.0.1
│ ├─┬ glob@3.1.21
│ │ ├── graceful-fs@1.2.3
│ │ └── inherits@1.0.0
│ ├── hooker@0.2.3
│ ├── iconv-lite@0.2.11
│ ├─┬ js-yaml@2.0.5
│ │ ├─┬ argparse@0.1.15
│ │ │ ├── underscore@1.4.4
│ │ │ └── underscore.string@2.3.3
│ │ └── esprima@1.0.4
│ ├── lodash@0.9.2
│ ├─┬ minimatch@0.2.12
│ │ ├── lru-cache@2.3.1
│ │ └── sigmund@1.0.0
│ ├─┬ nopt@1.0.10
│ │ └── abbrev@1.0.4
│ ├─┬ rimraf@2.0.3
│ │ └── graceful-fs@1.1.14
│ ├── underscore.string@2.2.1
│ └── which@1.0.5
├─┬ grunt-concat-sourcemap@0.3.1
│ └─┬ source-map@0.1.30
│ └── amdefine@0.0.8
├─┬ grunt-concurrent@0.3.1
│ └── lpad@0.1.0
├── grunt-contrib-clean@0.4.1
├─┬ grunt-contrib-coffee@0.7.0
│ └── coffee-script@1.6.3
├── grunt-contrib-concat@0.3.0
├─┬ grunt-contrib-connect@0.3.0
│ └─┬ connect@2.7.11
│ ├── buffer-crc32@0.2.1
│ ├── bytes@0.2.0
│ ├── cookie@0.0.5
│ ├── cookie-signature@1.0.1
│ ├── debug@0.7.2
│ ├── formidable@1.0.14
│ ├── fresh@0.1.0
│ ├── pause@0.0.1
│ ├── qs@0.6.5
│ └─┬ send@0.1.1
│ ├── mime@1.2.11
│ └── range-parser@0.0.4
├── grunt-contrib-copy@0.4.1
├─┬ grunt-contrib-cssmin@0.6.2
│ ├─┬ clean-css@1.1.3
│ │ └── commander@2.0.0
│ └─┬ grunt-lib-contrib@0.6.1
│ └── zlib-browserify@0.0.1
├─┬ grunt-contrib-jshint@0.6.4
│ └─┬ jshint@2.1.11
│ ├── cli@0.4.5
│ ├── console-browserify@0.1.6
│ ├─┬ minimatch@0.2.12
│ │ ├── lru-cache@2.3.1
│ │ └── sigmund@1.0.0
│ ├── shelljs@0.1.4
│ └── underscore@1.4.4
├─┬ grunt-contrib-uglify@0.2.4
│ ├─┬ grunt-lib-contrib@0.6.1
│ │ └── zlib-browserify@0.0.1
│ └─┬ uglify-js@2.4.0
│ ├── async@0.2.9
│ ├─┬ optimist@0.3.7
│ │ └── wordwrap@0.0.2
│ ├─┬ source-map@0.1.30
│ │ └── amdefine@0.0.8
│ └── uglify-to-browserify@1.0.1
├─┬ grunt-contrib-watch@0.4.4
│ ├─┬ gaze@0.3.4
│ │ ├── fileset@0.1.5
│ │ └─┬ minimatch@0.2.12
│ │ ├── lru-cache@2.3.1
│ │ └── sigmund@1.0.0
│ └─┬ tiny-lr@0.0.4
│ ├── debug@0.7.2
│ ├── faye-websocket@0.4.4
│ ├─┬ noptify@0.0.3
│ │ └─┬ nopt@2.0.0
│ │ └── abbrev@1.0.4
│ └── qs@0.5.6
├─┬ grunt-dom-munger@2.0.1
│ ├─┬ cheerio@0.12.3
│ │ ├─┬ cheerio-select@0.0.3
│ │ │ └─┬ CSSselect@0.3.11
│ │ │ ├── CSSwhat@0.4.1
│ │ │ └─┬ domutils@1.2.1
│ │ │ └── domelementtype@1.1.1
│ │ ├── entities@0.3.0
│ │ ├─┬ htmlparser2@3.1.4
│ │ │ ├── domelementtype@1.1.1
│ │ │ ├── domhandler@2.0.3
│ │ │ ├── domutils@1.1.6
│ │ │ └── readable-stream@1.0.17
│ │ └── underscore@1.4.4
│ └─┬ jsdom@0.5.7
│ ├─┬ contextify@0.1.6
│ │ └── bindings@1.1.1
│ ├── cssom@0.2.5
│ ├── cssstyle@0.2.3
│ ├── htmlparser@1.7.6
│ ├── nwmatcher@1.3.1
│ └─┬ request@2.27.0
│ ├── aws-sign@0.3.0
│ ├── cookie-jar@0.3.0
│ ├── forever-agent@0.5.0
│ ├─┬ form-data@0.1.2
│ │ ├── async@0.2.9
│ │ └─┬ combined-stream@0.0.4
│ │ └── delayed-stream@0.0.5
│ ├─┬ hawk@1.0.0
│ │ ├── boom@0.4.2
│ │ ├── cryptiles@0.2.2
│ │ ├── hoek@0.9.1
│ │ └── sntp@0.2.4
│ ├─┬ http-signature@0.10.0
│ │ ├── asn1@0.1.11
│ │ ├── assert-plus@0.1.2
│ │ └── ctype@0.5.2
│ ├── json-stringify-safe@5.0.0
│ ├── mime@1.2.11
│ ├── node-uuid@1.4.1
│ ├── oauth-sign@0.3.0
│ ├── qs@0.6.5
│ └── tunnel-agent@0.3.0
├── grunt-ember-templates@0.4.15
├─┬ grunt-es6-module-transpiler@0.4.1
│ └─┬ es6-module-transpiler@0.2.0
│ ├── coffee-script@1.3.3
│ └─┬ optimist@0.3.7
│ └── wordwrap@0.0.2
├─┬ grunt-karma@0.5.4
│ └─┬ optimist@0.6.0
│ ├── minimist@0.0.5
│ └── wordwrap@0.0.2
├── grunt-rev@0.1.0
├─┬ grunt-sass@0.8.0
│ ├─┬ grunt-lib-contrib@0.6.1
│ │ └── zlib-browserify@0.0.1
│ └─┬ node-sass@0.7.0
│ ├── colors@0.6.0-1
│ ├── mkdirp@0.3.5
│ ├─┬ mocha@1.13.0
│ │ ├── commander@0.6.1
│ │ ├── debug@0.7.4
│ │ ├── diff@1.0.7
│ │ ├─┬ glob@3.2.3
│ │ │ ├── graceful-fs@2.0.1
│ │ │ ├── inherits@2.0.1
│ │ │ └─┬ minimatch@0.2.12
│ │ │ ├── lru-cache@2.5.0
│ │ │ └── sigmund@1.0.0
│ │ ├── growl@1.7.0
│ │ └─┬ jade@0.26.3
│ │ └── mkdirp@0.3.0
│ ├── node-watch@0.3.4
│ └─┬ optimist@0.6.0
│ ├── minimist@0.0.5
│ └── wordwrap@0.0.2
├── grunt-usemin@0.1.12
├─┬ http-proxy@0.10.3
│ ├── colors@0.6.2
│ ├─┬ optimist@0.3.7
│ │ └── wordwrap@0.0.2
│ ├── pkginfo@0.2.3
│ └─┬ utile@0.1.7
│ ├── async@0.1.22
│ ├── deep-equal@0.1.0
│ ├── i@0.3.2
│ ├── mkdirp@0.3.5
│ ├── ncp@0.2.7
│ └── rimraf@1.0.9
├─┬ karma@0.9.8
│ ├── chokidar@0.6.3
│ ├── coffee-script@1.6.3
│ ├── colors@0.6.0-1
│ ├─┬ connect@2.8.8
│ │ ├── buffer-crc32@0.2.1
│ │ ├── bytes@0.2.0
│ │ ├── cookie@0.1.0
│ │ ├── cookie-signature@1.0.1
│ │ ├── debug@0.7.2
│ │ ├── formidable@1.0.14
│ │ ├── fresh@0.2.0
│ │ ├── methods@0.0.1
│ │ ├── pause@0.0.1
│ │ ├── qs@0.6.5
│ │ ├─┬ send@0.1.4
│ │ │ └── range-parser@0.0.4
│ │ └── uid2@0.0.2
│ ├── di@0.0.1
│ ├─┬ glob@3.1.21
│ │ └── inherits@1.0.0
│ ├── graceful-fs@1.2.3
│ ├─┬ http-proxy@0.10.3
│ │ ├── pkginfo@0.2.3
│ │ └─┬ utile@0.1.7
│ │ ├── async@0.1.22
│ │ ├── deep-equal@0.0.0
│ │ ├── i@0.3.2
│ │ ├── mkdirp@0.3.5
│ │ ├── ncp@0.2.7
│ │ └── rimraf@1.0.9
│ ├── lodash@1.1.1
│ ├─┬ log4js@0.6.9
│ │ ├── async@0.1.15
│ │ ├── readable-stream@1.0.17
│ │ └── semver@1.1.4
│ ├── mime@1.2.11
│ ├─┬ minimatch@0.2.12
│ │ ├── lru-cache@2.3.1
│ │ └── sigmund@1.0.0
│ ├─┬ optimist@0.3.7
│ │ └── wordwrap@0.0.2
│ ├── q@0.9.7
│ ├── rimraf@2.1.4
│ ├─┬ socket.io@0.9.16
│ │ ├── base64id@0.1.0
│ │ ├── policyfile@0.0.4
│ │ ├── redis@0.7.3
│ │ └─┬ socket.io-client@0.9.16
│ │ ├─┬ active-x-obfuscator@0.0.1
│ │ │ └── zeparser@0.0.5
│ │ ├── uglify-js@1.2.5
│ │ ├─┬ ws@0.4.31
│ │ │ ├── commander@0.6.1
│ │ │ ├── nan@0.3.2
│ │ │ ├── options@0.0.5
│ │ │ └── tinycolor@0.0.1
│ │ └── xmlhttprequest@1.4.2
│ └─┬ useragent@2.0.7
│ └── lru-cache@2.2.4
├── karma-chrome-launcher@0.1.0
├─┬ karma-coffee-preprocessor@0.1.0
│ └── coffee-script@1.6.3
├─┬ karma-coverage@0.0.5
│ ├── dateformat@1.0.6-1.2.3
│ └─┬ istanbul@0.1.44
│ ├── abbrev@1.0.4
│ ├── async@0.2.9
│ ├─┬ escodegen@0.0.23
│ │ ├── estraverse@0.0.4
│ │ └─┬ source-map@0.1.30
│ │ └── amdefine@0.0.8
│ ├── esprima@1.0.4
│ ├─┬ fileset@0.1.5
│ │ └─┬ minimatch@0.2.12
│ │ ├── lru-cache@2.3.1
│ │ └── sigmund@1.0.0
│ ├─┬ handlebars@1.0.12
│ │ ├── optimist@0.3.7
│ │ └─┬ uglify-js@2.3.6
│ │ └─┬ source-map@0.1.30
│ │ └── amdefine@0.0.8
│ ├── mkdirp@0.3.5
│ ├── nopt@2.1.2
│ ├── resolve@0.5.1
│ ├── which@1.0.5
│ └── wordwrap@0.0.2
├── karma-firefox-launcher@0.1.0
├── karma-html2js-preprocessor@0.1.0
├── karma-jasmine@0.1.3
├─┬ karma-phantomjs-launcher@0.0.3
│ └─┬ phantomjs@1.9.2-2
│ ├── adm-zip@0.2.1
│ ├── kew@0.1.7
│ ├── mkdirp@0.3.5
│ ├── ncp@0.4.2
│ ├─┬ npmconf@0.0.24
│ │ ├─┬ config-chain@1.1.8
│ │ │ └── proto-list@1.2.2
│ │ ├── inherits@1.0.0
│ │ ├── ini@1.1.0
│ │ ├─┬ nopt@2.1.2
│ │ │ └── abbrev@1.0.4
│ │ ├── once@1.1.1
│ │ ├── osenv@0.0.3
│ │ └── semver@1.1.4
│ ├─┬ rimraf@2.0.3
│ │ └── graceful-fs@1.1.14
│ └── which@1.0.5
├── karma-qunit@0.0.3
├── karma-requirejs@0.1.0
├── karma-script-launcher@0.1.0
├─┬ load-grunt-config@0.5.0
│ └─┬ js-yaml@2.1.2
│ ├─┬ argparse@0.1.15
│ │ ├── underscore@1.4.4
│ │ └── underscore.string@2.3.3
│ └── esprima@1.0.4
├─┬ load-grunt-tasks@0.1.0
│ └─┬ minimatch@0.2.12
│ ├── lru-cache@2.3.1
│ └── sigmund@1.0.0
├── lockfile@0.3.4
├─┬ loom@2.0.0
│ ├─┬ cli-color@0.2.3
│ │ ├── es5-ext@0.9.2
│ │ └─┬ memoizee@0.2.6
│ │ ├── event-emitter@0.2.2
│ │ └── next-tick@0.1.0
│ ├── commander@2.0.0
│ ├─┬ fs-extra@0.6.4
│ │ ├── jsonfile@1.0.1
│ │ ├── mkdirp@0.3.5
│ │ ├── ncp@0.4.2
│ │ └─┬ rimraf@2.2.2
│ │ └── graceful-fs@2.0.1
│ ├─┬ loom-engine-hbs@1.0.0
│ │ └─┬ handlebars@1.0.12
│ │ ├─┬ optimist@0.3.7
│ │ │ └── wordwrap@0.0.2
│ │ └─┬ uglify-js@2.3.6
│ │ ├── async@0.2.9
│ │ └─┬ source-map@0.1.31
│ │ └── amdefine@0.1.0
│ └── sync-prompt@0.1.0
└─┬ loom-generators-ember@0.0.1
└── fleck@0.5.1
@aexmachina Thanks! Try upgrading to the latest watch task, 0.5.3
and let me know if the error still occurs.
Yep, that's got it. Thanks!
Actually, no it hasn't :(
$ npm list
app-kit@0.0.0 /Users/simonwade/dev/Workspace/spotify-collection/client
├─┬ bower@1.2.7
│ ├── abbrev@1.0.4
│ ├── archy@0.0.2
│ ├─┬ bower-config@0.5.0
│ │ ├── mout@0.6.0
│ │ └─┬ optimist@0.6.0
│ │ ├── minimist@0.0.5
│ │ └── wordwrap@0.0.2
│ ├── bower-endpoint-parser@0.2.1
│ ├─┬ bower-json@0.4.0
│ │ ├── deep-extend@0.2.6
│ │ └── intersect@0.0.3
│ ├── bower-logger@0.2.1
│ ├─┬ bower-registry-client@0.1.5
│ │ ├── async@0.2.9
│ │ ├─┬ bower-config@0.4.5
│ │ │ ├── mout@0.6.0
│ │ │ └─┬ optimist@0.6.0
│ │ │ ├── minimist@0.0.5
│ │ │ └── wordwrap@0.0.2
│ │ └── request-replay@0.2.0
│ ├─┬ cardinal@0.4.2
│ │ ├── ansicolors@0.2.1
│ │ └─┬ redeyed@0.4.2
│ │ └── esprima@1.0.4
│ ├─┬ chalk@0.2.1
│ │ ├── ansi-styles@0.2.0
│ │ └── has-color@0.1.1
│ ├── chmodr@0.1.0
│ ├─┬ fstream@0.1.24
│ │ └── inherits@2.0.1
│ ├─┬ fstream-ignore@0.0.7
│ │ ├── inherits@2.0.1
│ │ └─┬ minimatch@0.2.12
│ │ └── sigmund@1.0.0
│ ├── graceful-fs@2.0.1
│ ├─┬ handlebars@1.0.12
│ │ ├─┬ optimist@0.3.7
│ │ │ └── wordwrap@0.0.2
│ │ └─┬ uglify-js@2.3.6
│ │ ├── async@0.2.9
│ │ └─┬ source-map@0.1.30
│ │ └── amdefine@0.0.8
│ ├─┬ inquirer@0.3.4
│ │ ├── async@0.2.9
│ │ ├─┬ cli-color@0.2.3
│ │ │ ├── es5-ext@0.9.2
│ │ │ └─┬ memoizee@0.2.6
│ │ │ ├── event-emitter@0.2.2
│ │ │ └── next-tick@0.1.0
│ │ ├── lodash@1.2.1
│ │ └── mute-stream@0.0.3
│ ├── junk@0.2.1
│ ├── lru-cache@2.3.1
│ ├── mkdirp@0.3.5
│ ├── mout@0.7.1
│ ├── nopt@2.1.2
│ ├── open@0.0.4
│ ├── osenv@0.0.3
│ ├─┬ promptly@0.2.0
│ │ └─┬ read@1.0.5
│ │ └── mute-stream@0.0.4
│ ├── q@0.9.7
│ ├─┬ request@2.27.0
│ │ ├── aws-sign@0.3.0
│ │ ├── cookie-jar@0.3.0
│ │ ├── forever-agent@0.5.0
│ │ ├─┬ form-data@0.1.2
│ │ │ ├── async@0.2.9
│ │ │ └─┬ combined-stream@0.0.4
│ │ │ └── delayed-stream@0.0.5
│ │ ├─┬ hawk@1.0.0
│ │ │ ├── boom@0.4.2
│ │ │ ├── cryptiles@0.2.2
│ │ │ ├── hoek@0.9.1
│ │ │ └── sntp@0.2.4
│ │ ├─┬ http-signature@0.10.0
│ │ │ ├── asn1@0.1.11
│ │ │ ├── assert-plus@0.1.2
│ │ │ └── ctype@0.5.2
│ │ ├── json-stringify-safe@5.0.0
│ │ ├── mime@1.2.11
│ │ ├── node-uuid@1.4.1
│ │ ├── oauth-sign@0.3.0
│ │ ├── qs@0.6.5
│ │ └── tunnel-agent@0.3.0
│ ├─┬ request-progress@0.3.1
│ │ └── throttleit@0.0.2
│ ├── retry@0.6.0
│ ├── rimraf@2.2.2
│ ├── semver@2.1.0
│ ├── stringify-object@0.1.7
│ ├─┬ sudo-block@0.2.1
│ │ └─┬ chalk@0.1.1
│ │ ├── ansi-styles@0.1.2
│ │ └── has-color@0.1.1
│ ├─┬ tar@0.1.18
│ │ ├── block-stream@0.0.7
│ │ └── inherits@2.0.1
│ ├── tmp@0.0.21
│ ├─┬ unzip@0.1.9
│ │ ├─┬ binary@0.3.0
│ │ │ ├── buffers@0.1.1
│ │ │ └─┬ chainsaw@0.1.0
│ │ │ └── traverse@0.3.9
│ │ ├─┬ match-stream@0.0.2
│ │ │ └── buffers@0.1.1
│ │ ├─┬ pullstream@0.4.0
│ │ │ ├── over@0.0.5
│ │ │ └── slice-stream@0.0.0
│ │ ├── readable-stream@1.0.17
│ │ └── setimmediate@1.0.1
│ ├─┬ update-notifier@0.1.6
│ │ ├─┬ chalk@0.1.1
│ │ │ ├── ansi-styles@0.1.2
│ │ │ └── has-color@0.1.1
│ │ ├─┬ configstore@0.1.5
│ │ │ ├─┬ js-yaml@2.1.2
│ │ │ │ ├─┬ argparse@0.1.15
│ │ │ │ │ ├── underscore@1.4.4
│ │ │ │ │ └── underscore.string@2.3.3
│ │ │ │ └── esprima@1.0.4
│ │ │ └── lodash@1.3.1
│ │ ├─┬ request@2.22.0
│ │ │ ├── aws-sign@0.3.0
│ │ │ ├── cookie-jar@0.3.0
│ │ │ ├── forever-agent@0.5.0
│ │ │ ├─┬ form-data@0.0.8
│ │ │ │ ├── async@0.2.9
│ │ │ │ └─┬ combined-stream@0.0.4
│ │ │ │ └── delayed-stream@0.0.5
│ │ │ ├─┬ hawk@0.13.1
│ │ │ │ ├─┬ boom@0.4.2
│ │ │ │ │ └── hoek@0.9.1
│ │ │ │ ├── cryptiles@0.2.2
│ │ │ │ ├── hoek@0.8.5
│ │ │ │ └─┬ sntp@0.2.4
│ │ │ │ └── hoek@0.9.1
│ │ │ ├─┬ http-signature@0.10.0
│ │ │ │ ├── asn1@0.1.11
│ │ │ │ ├── assert-plus@0.1.2
│ │ │ │ └── ctype@0.5.2
│ │ │ ├── json-stringify-safe@4.0.0
│ │ │ ├── mime@1.2.11
│ │ │ ├── node-uuid@1.4.1
│ │ │ ├── oauth-sign@0.3.0
│ │ │ ├── qs@0.6.5
│ │ │ └── tunnel-agent@0.3.0
│ │ └── semver@2.0.11
│ └── which@1.0.5
├── connect-livereload@0.3.0
├─┬ glob@3.2.6
│ ├── inherits@2.0.1
│ └─┬ minimatch@0.2.12
│ ├── lru-cache@2.3.1
│ └── sigmund@1.0.0
├─┬ grunt@0.4.1
│ ├── async@0.1.22
│ ├── coffee-script@1.3.3
│ ├── colors@0.6.2
│ ├── dateformat@1.0.2-1.2.3
│ ├── eventemitter2@0.4.13
│ ├─┬ findup-sync@0.1.2
│ │ └── lodash@1.0.1
│ ├─┬ glob@3.1.21
│ │ ├── graceful-fs@1.2.3
│ │ └── inherits@1.0.0
│ ├── hooker@0.2.3
│ ├── iconv-lite@0.2.11
│ ├─┬ js-yaml@2.0.5
│ │ ├─┬ argparse@0.1.15
│ │ │ ├── underscore@1.4.4
│ │ │ └── underscore.string@2.3.3
│ │ └── esprima@1.0.4
│ ├── lodash@0.9.2
│ ├─┬ minimatch@0.2.12
│ │ ├── lru-cache@2.3.1
│ │ └── sigmund@1.0.0
│ ├─┬ nopt@1.0.10
│ │ └── abbrev@1.0.4
│ ├─┬ rimraf@2.0.3
│ │ └── graceful-fs@1.1.14
│ ├── underscore.string@2.2.1
│ └── which@1.0.5
├─┬ grunt-concat-sourcemap@0.3.1
│ └─┬ source-map@0.1.30
│ └── amdefine@0.0.8
├─┬ grunt-concurrent@0.3.1
│ └── lpad@0.1.0
├── grunt-contrib-clean@0.4.1
├─┬ grunt-contrib-coffee@0.7.0
│ └── coffee-script@1.6.3
├── grunt-contrib-concat@0.3.0
├─┬ grunt-contrib-connect@0.3.0
│ └─┬ connect@2.7.11
│ ├── buffer-crc32@0.2.1
│ ├── bytes@0.2.0
│ ├── cookie@0.0.5
│ ├── cookie-signature@1.0.1
│ ├── debug@0.7.2
│ ├── formidable@1.0.14
│ ├── fresh@0.1.0
│ ├── pause@0.0.1
│ ├── qs@0.6.5
│ └─┬ send@0.1.1
│ ├── mime@1.2.11
│ └── range-parser@0.0.4
├── grunt-contrib-copy@0.4.1
├─┬ grunt-contrib-cssmin@0.6.2
│ ├─┬ clean-css@1.1.3
│ │ └── commander@2.0.0
│ └─┬ grunt-lib-contrib@0.6.1
│ └── zlib-browserify@0.0.1
├─┬ grunt-contrib-jshint@0.6.4
│ └─┬ jshint@2.1.11
│ ├── cli@0.4.5
│ ├── console-browserify@0.1.6
│ ├─┬ minimatch@0.2.12
│ │ ├── lru-cache@2.3.1
│ │ └── sigmund@1.0.0
│ ├── shelljs@0.1.4
│ └── underscore@1.4.4
├─┬ grunt-contrib-uglify@0.2.4
│ ├─┬ grunt-lib-contrib@0.6.1
│ │ └── zlib-browserify@0.0.1
│ └─┬ uglify-js@2.4.0
│ ├── async@0.2.9
│ ├─┬ optimist@0.3.7
│ │ └── wordwrap@0.0.2
│ ├─┬ source-map@0.1.30
│ │ └── amdefine@0.0.8
│ └── uglify-to-browserify@1.0.1
├─┬ grunt-contrib-watch@0.5.3
│ ├─┬ gaze@0.4.3
│ │ └─┬ globule@0.1.0
│ │ ├─┬ glob@3.1.21
│ │ │ ├── graceful-fs@1.2.3
│ │ │ └── inherits@1.0.0
│ │ ├── lodash@1.0.1
│ │ └─┬ minimatch@0.2.12
│ │ ├── lru-cache@2.5.0
│ │ └── sigmund@1.0.0
│ └─┬ tiny-lr@0.0.4
│ ├── debug@0.7.4
│ ├── faye-websocket@0.4.4
│ ├─┬ noptify@0.0.3
│ │ └─┬ nopt@2.0.0
│ │ └── abbrev@1.0.4
│ └── qs@0.5.6
├─┬ grunt-dom-munger@2.0.1
│ ├─┬ cheerio@0.12.3
│ │ ├─┬ cheerio-select@0.0.3
│ │ │ └─┬ CSSselect@0.3.11
│ │ │ ├── CSSwhat@0.4.1
│ │ │ └─┬ domutils@1.2.1
│ │ │ └── domelementtype@1.1.1
│ │ ├── entities@0.3.0
│ │ ├─┬ htmlparser2@3.1.4
│ │ │ ├── domelementtype@1.1.1
│ │ │ ├── domhandler@2.0.3
│ │ │ ├── domutils@1.1.6
│ │ │ └── readable-stream@1.0.17
│ │ └── underscore@1.4.4
│ └─┬ jsdom@0.5.7
│ ├─┬ contextify@0.1.6
│ │ └── bindings@1.1.1
│ ├── cssom@0.2.5
│ ├── cssstyle@0.2.3
│ ├── htmlparser@1.7.6
│ ├── nwmatcher@1.3.1
│ └─┬ request@2.27.0
│ ├── aws-sign@0.3.0
│ ├── cookie-jar@0.3.0
│ ├── forever-agent@0.5.0
│ ├─┬ form-data@0.1.2
│ │ ├── async@0.2.9
│ │ └─┬ combined-stream@0.0.4
│ │ └── delayed-stream@0.0.5
│ ├─┬ hawk@1.0.0
│ │ ├── boom@0.4.2
│ │ ├── cryptiles@0.2.2
│ │ ├── hoek@0.9.1
│ │ └── sntp@0.2.4
│ ├─┬ http-signature@0.10.0
│ │ ├── asn1@0.1.11
│ │ ├── assert-plus@0.1.2
│ │ └── ctype@0.5.2
│ ├── json-stringify-safe@5.0.0
│ ├── mime@1.2.11
│ ├── node-uuid@1.4.1
│ ├── oauth-sign@0.3.0
│ ├── qs@0.6.5
│ └── tunnel-agent@0.3.0
├── grunt-ember-templates@0.4.15
├─┬ grunt-es6-module-transpiler@0.4.1
│ └─┬ es6-module-transpiler@0.2.0
│ ├── coffee-script@1.3.3
│ └─┬ optimist@0.3.7
│ └── wordwrap@0.0.2
├─┬ grunt-karma@0.5.4
│ └─┬ optimist@0.6.0
│ ├── minimist@0.0.5
│ └── wordwrap@0.0.2
├── grunt-rev@0.1.0
├─┬ grunt-sass@0.8.0
│ ├─┬ grunt-lib-contrib@0.6.1
│ │ └── zlib-browserify@0.0.1
│ └─┬ node-sass@0.7.0
│ ├── colors@0.6.0-1
│ ├── mkdirp@0.3.5
│ ├─┬ mocha@1.13.0
│ │ ├── commander@0.6.1
│ │ ├── debug@0.7.4
│ │ ├── diff@1.0.7
│ │ ├─┬ glob@3.2.3
│ │ │ ├── graceful-fs@2.0.1
│ │ │ ├── inherits@2.0.1
│ │ │ └─┬ minimatch@0.2.12
│ │ │ ├── lru-cache@2.5.0
│ │ │ └── sigmund@1.0.0
│ │ ├── growl@1.7.0
│ │ └─┬ jade@0.26.3
│ │ └── mkdirp@0.3.0
│ ├── node-watch@0.3.4
│ └─┬ optimist@0.6.0
│ ├── minimist@0.0.5
│ └── wordwrap@0.0.2
├── grunt-usemin@0.1.12
├─┬ http-proxy@0.10.3
│ ├── colors@0.6.2
│ ├─┬ optimist@0.3.7
│ │ └── wordwrap@0.0.2
│ ├── pkginfo@0.2.3
│ └─┬ utile@0.1.7
│ ├── async@0.1.22
│ ├── deep-equal@0.1.0
│ ├── i@0.3.2
│ ├── mkdirp@0.3.5
│ ├── ncp@0.2.7
│ └── rimraf@1.0.9
├─┬ karma@0.9.8
│ ├── chokidar@0.6.3
│ ├── coffee-script@1.6.3
│ ├── colors@0.6.0-1
│ ├─┬ connect@2.8.8
│ │ ├── buffer-crc32@0.2.1
│ │ ├── bytes@0.2.0
│ │ ├── cookie@0.1.0
│ │ ├── cookie-signature@1.0.1
│ │ ├── debug@0.7.2
│ │ ├── formidable@1.0.14
│ │ ├── fresh@0.2.0
│ │ ├── methods@0.0.1
│ │ ├── pause@0.0.1
│ │ ├── qs@0.6.5
│ │ ├─┬ send@0.1.4
│ │ │ └── range-parser@0.0.4
│ │ └── uid2@0.0.2
│ ├── di@0.0.1
│ ├─┬ glob@3.1.21
│ │ └── inherits@1.0.0
│ ├── graceful-fs@1.2.3
│ ├─┬ http-proxy@0.10.3
│ │ ├── pkginfo@0.2.3
│ │ └─┬ utile@0.1.7
│ │ ├── async@0.1.22
│ │ ├── deep-equal@0.0.0
│ │ ├── i@0.3.2
│ │ ├── mkdirp@0.3.5
│ │ ├── ncp@0.2.7
│ │ └── rimraf@1.0.9
│ ├── lodash@1.1.1
│ ├─┬ log4js@0.6.9
│ │ ├── async@0.1.15
│ │ ├── readable-stream@1.0.17
│ │ └── semver@1.1.4
│ ├── mime@1.2.11
│ ├─┬ minimatch@0.2.12
│ │ ├── lru-cache@2.3.1
│ │ └── sigmund@1.0.0
│ ├─┬ optimist@0.3.7
│ │ └── wordwrap@0.0.2
│ ├── q@0.9.7
│ ├── rimraf@2.1.4
│ ├─┬ socket.io@0.9.16
│ │ ├── base64id@0.1.0
│ │ ├── policyfile@0.0.4
│ │ ├── redis@0.7.3
│ │ └─┬ socket.io-client@0.9.16
│ │ ├─┬ active-x-obfuscator@0.0.1
│ │ │ └── zeparser@0.0.5
│ │ ├── uglify-js@1.2.5
│ │ ├─┬ ws@0.4.31
│ │ │ ├── commander@0.6.1
│ │ │ ├── nan@0.3.2
│ │ │ ├── options@0.0.5
│ │ │ └── tinycolor@0.0.1
│ │ └── xmlhttprequest@1.4.2
│ └─┬ useragent@2.0.7
│ └── lru-cache@2.2.4
├── karma-chrome-launcher@0.1.0
├─┬ karma-coffee-preprocessor@0.1.0
│ └── coffee-script@1.6.3
├─┬ karma-coverage@0.0.5
│ ├── dateformat@1.0.6-1.2.3
│ └─┬ istanbul@0.1.44
│ ├── abbrev@1.0.4
│ ├── async@0.2.9
│ ├─┬ escodegen@0.0.23
│ │ ├── estraverse@0.0.4
│ │ └─┬ source-map@0.1.30
│ │ └── amdefine@0.0.8
│ ├── esprima@1.0.4
│ ├─┬ fileset@0.1.5
│ │ └─┬ minimatch@0.2.12
│ │ ├── lru-cache@2.3.1
│ │ └── sigmund@1.0.0
│ ├─┬ handlebars@1.0.12
│ │ ├── optimist@0.3.7
│ │ └─┬ uglify-js@2.3.6
│ │ └─┬ source-map@0.1.30
│ │ └── amdefine@0.0.8
│ ├── mkdirp@0.3.5
│ ├── nopt@2.1.2
│ ├── resolve@0.5.1
│ ├── which@1.0.5
│ └── wordwrap@0.0.2
├── karma-firefox-launcher@0.1.0
├── karma-html2js-preprocessor@0.1.0
├── karma-jasmine@0.1.3
├─┬ karma-phantomjs-launcher@0.0.3
│ └─┬ phantomjs@1.9.2-2
│ ├── adm-zip@0.2.1
│ ├── kew@0.1.7
│ ├── mkdirp@0.3.5
│ ├── ncp@0.4.2
│ ├─┬ npmconf@0.0.24
│ │ ├─┬ config-chain@1.1.8
│ │ │ └── proto-list@1.2.2
│ │ ├── inherits@1.0.0
│ │ ├── ini@1.1.0
│ │ ├─┬ nopt@2.1.2
│ │ │ └── abbrev@1.0.4
│ │ ├── once@1.1.1
│ │ ├── osenv@0.0.3
│ │ └── semver@1.1.4
│ ├─┬ rimraf@2.0.3
│ │ └── graceful-fs@1.1.14
│ └── which@1.0.5
├── karma-qunit@0.0.3
├── karma-requirejs@0.1.0
├── karma-script-launcher@0.1.0
├─┬ load-grunt-config@0.5.0
│ └─┬ js-yaml@2.1.2
│ ├─┬ argparse@0.1.15
│ │ ├── underscore@1.4.4
│ │ └── underscore.string@2.3.3
│ └── esprima@1.0.4
├─┬ load-grunt-tasks@0.1.0
│ └─┬ minimatch@0.2.12
│ ├── lru-cache@2.3.1
│ └── sigmund@1.0.0
├── lockfile@0.3.4
├─┬ loom@2.0.0
│ ├─┬ cli-color@0.2.3
│ │ ├── es5-ext@0.9.2
│ │ └─┬ memoizee@0.2.6
│ │ ├── event-emitter@0.2.2
│ │ └── next-tick@0.1.0
│ ├── commander@2.0.0
│ ├─┬ fs-extra@0.6.4
│ │ ├── jsonfile@1.0.1
│ │ ├── mkdirp@0.3.5
│ │ ├── ncp@0.4.2
│ │ └─┬ rimraf@2.2.2
│ │ └── graceful-fs@2.0.1
│ ├─┬ loom-engine-hbs@1.0.0
│ │ └─┬ handlebars@1.0.12
│ │ ├─┬ optimist@0.3.7
│ │ │ └── wordwrap@0.0.2
│ │ └─┬ uglify-js@2.3.6
│ │ ├── async@0.2.9
│ │ └─┬ source-map@0.1.31
│ │ └── amdefine@0.1.0
│ └── sync-prompt@0.1.0
└─┬ loom-generators-ember@0.0.1
└── fleck@0.5.1
It looks like the problem is caused by the number of files, if I reduce the set of file/directories to be watched then the problem goes away. So I can work around it, but I think it'd be good to have a better error message when this happens.
I had the same issue, I caused (and fixed) it by making a small adjustment in the files to be watched:
'<%= yeoman.app %>/{,**/}*.html'
changed to:
'<%= yeoman.app %>/{,*/}*.html',
To debug this though, is there any way to inspect what files are matched by patterns set in the watch task?
grunt watch --verbose
should list all of the files it is watching.
Just curious, why do people do {,*/}*.html
instead of just **/*.html
? The curly braces seem unnecessary in that pattern.
@fwielstra you can check files matched with this:
module.exports = function(grunt) {
grunt.initConfig({
matchtest: {
/* change the content of this pattern to test your variables */
src: '<%= matchPatternToTest %>'
},
});
// Match Pattern Testing
// ----------------------------
// This is a handy little function for testing your match patterns. When you use variables for
// configuring tasks, it's sometimes useful to see output of what variables your directives sees.
// This task lets you do that. Simply call `grunt matchtest` from the command line.
grunt.registerMultiTask('matchtest', function() {
console.log(this.filesSrc);
});
};
Same issue. Any suggestions?
├── ejs@0.8.8
├─┬ grunt@0.4.2
│ ├── async@0.1.22
│ ├── coffee-script@1.3.3
│ ├── colors@0.6.2
│ ├── dateformat@1.0.2-1.2.3
│ ├── eventemitter2@0.4.14
│ ├── exit@0.1.2
│ ├─┬ findup-sync@0.1.3
│ │ ├─┬ glob@3.2.11
│ │ │ ├── inherits@2.0.1
│ │ │ └─┬ minimatch@0.3.0
│ │ │ ├── lru-cache@2.5.0
│ │ │ └── sigmund@1.0.0
│ │ └── lodash@2.4.1
│ ├── getobject@0.1.0
│ ├─┬ glob@3.1.21
│ │ ├── graceful-fs@1.2.3
│ │ └── inherits@1.0.0
│ ├── hooker@0.2.3
│ ├── iconv-lite@0.2.11
│ ├─┬ js-yaml@2.0.5
│ │ ├─┬ argparse@0.1.15
│ │ │ ├── underscore@1.4.4
│ │ │ └── underscore.string@2.3.3
│ │ └── esprima@1.0.4
│ ├── lodash@0.9.2
│ ├─┬ minimatch@0.2.14
│ │ ├── lru-cache@2.5.0
│ │ └── sigmund@1.0.0
│ ├─┬ nopt@1.0.10
│ │ └── abbrev@1.0.5
│ ├─┬ rimraf@2.0.3
│ │ └── graceful-fs@1.1.14
│ ├── underscore.string@2.2.1
│ └── which@1.0.5
├─┬ grunt-contrib-clean@0.5.0
│ └── rimraf@2.2.8
├─┬ grunt-contrib-coffee@0.10.1
│ ├─┬ chalk@0.4.0
│ │ ├── ansi-styles@1.0.0
│ │ ├── has-color@0.1.7
│ │ └── strip-ansi@0.1.1
│ └─┬ coffee-script@1.7.1
│ └── mkdirp@0.3.5
├── grunt-contrib-concat@0.3.0
├── grunt-contrib-copy@0.5.0
├─┬ grunt-contrib-cssmin@0.9.0
│ ├─┬ chalk@0.4.0
│ │ ├── ansi-styles@1.0.0
│ │ ├── has-color@0.1.7
│ │ └── strip-ansi@0.1.1
│ ├─┬ clean-css@2.1.8
│ │ └── commander@2.1.0
│ └─┬ maxmin@0.1.0
│ ├─┬ gzip-size@0.1.1
│ │ ├─┬ concat-stream@1.4.6
│ │ │ ├── inherits@2.0.1
│ │ │ ├─┬ readable-stream@1.1.13
│ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ ├── isarray@0.0.1
│ │ │ │ └── string_decoder@0.10.31
│ │ │ └── typedarray@0.0.6
│ │ └─┬ zlib-browserify@0.0.3
│ │ └─┬ tape@0.2.2
│ │ ├── deep-equal@0.0.0
│ │ ├── defined@0.0.0
│ │ └── jsonify@0.0.0
│ └── pretty-bytes@0.1.2
├─┬ grunt-contrib-jshint@0.10.0
│ ├── hooker@0.2.3
│ └─┬ jshint@2.5.5
│ ├─┬ cli@0.6.3
│ │ └─┬ glob@3.2.11
│ │ ├── inherits@2.0.1
│ │ └─┬ minimatch@0.3.0
│ │ ├── lru-cache@2.5.0
│ │ └── sigmund@1.0.0
│ ├─┬ console-browserify@1.1.0
│ │ └── date-now@0.1.4
│ ├── exit@0.1.2
│ ├─┬ htmlparser2@3.7.3
│ │ ├── domelementtype@1.1.1
│ │ ├── domhandler@2.2.0
│ │ ├── domutils@1.5.0
│ │ ├── entities@1.0.0
│ │ └─┬ readable-stream@1.1.13
│ │ ├── core-util-is@1.0.1
│ │ ├── inherits@2.0.1
│ │ ├── isarray@0.0.1
│ │ └── string_decoder@0.10.31
│ ├─┬ minimatch@0.4.0
│ │ ├── lru-cache@2.5.0
│ │ └── sigmund@1.0.0
│ ├── shelljs@0.3.0
│ ├── strip-json-comments@0.1.3
│ └── underscore@1.6.0
├─┬ grunt-contrib-jst@0.6.0
│ ├─┬ chalk@0.4.0
│ │ ├── ansi-styles@1.0.0
│ │ ├── has-color@0.1.7
│ │ └── strip-ansi@0.1.1
│ └─┬ grunt-lib-contrib@0.7.1
│ ├─┬ maxmin@0.1.0
│ │ ├─┬ gzip-size@0.1.1
│ │ │ ├─┬ concat-stream@1.4.6
│ │ │ │ ├── inherits@2.0.1
│ │ │ │ ├─┬ readable-stream@1.1.13
│ │ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ │ ├── isarray@0.0.1
│ │ │ │ │ └── string_decoder@0.10.31
│ │ │ │ └── typedarray@0.0.6
│ │ │ └─┬ zlib-browserify@0.0.3
│ │ │ └─┬ tape@0.2.2
│ │ │ ├── deep-equal@0.0.0
│ │ │ ├── defined@0.0.0
│ │ │ └── jsonify@0.0.0
│ │ └── pretty-bytes@0.1.2
│ └── strip-path@0.1.1
├─┬ grunt-contrib-less@0.11.4
│ ├── async@0.2.10
│ ├─┬ chalk@0.5.1
│ │ ├── ansi-styles@1.1.0
│ │ ├── escape-string-regexp@1.0.1
│ │ ├─┬ has-ansi@0.1.0
│ │ │ └── ansi-regex@0.2.1
│ │ ├─┬ strip-ansi@0.3.0
│ │ │ └── ansi-regex@0.2.1
│ │ └── supports-color@0.2.0
│ ├─┬ less@1.7.4
│ │ ├─┬ clean-css@2.1.8
│ │ │ └── commander@2.1.0
│ │ ├── graceful-fs@2.0.3
│ │ ├── mime@1.2.11
│ │ ├── mkdirp@0.3.5
│ │ ├─┬ request@2.34.0
│ │ │ ├── aws-sign2@0.5.0
│ │ │ ├── forever-agent@0.5.2
│ │ │ ├─┬ form-data@0.1.4
│ │ │ │ ├── async@0.9.0
│ │ │ │ └─┬ combined-stream@0.0.5
│ │ │ │ └── delayed-stream@0.0.5
│ │ │ ├─┬ hawk@1.0.0
│ │ │ │ ├── boom@0.4.2
│ │ │ │ ├── cryptiles@0.2.2
│ │ │ │ ├── hoek@0.9.1
│ │ │ │ └── sntp@0.2.4
│ │ │ ├─┬ http-signature@0.10.0
│ │ │ │ ├── asn1@0.1.11
│ │ │ │ ├── assert-plus@0.1.2
│ │ │ │ └── ctype@0.5.2
│ │ │ ├── json-stringify-safe@5.0.0
│ │ │ ├── node-uuid@1.4.1
│ │ │ ├── oauth-sign@0.3.0
│ │ │ ├── qs@0.6.6
│ │ │ ├─┬ tough-cookie@0.12.1
│ │ │ │ └── punycode@1.3.1
│ │ │ └── tunnel-agent@0.3.0
│ │ └─┬ source-map@0.1.38
│ │ └── amdefine@0.1.0
│ └─┬ maxmin@0.1.0
│ ├─┬ chalk@0.4.0
│ │ ├── ansi-styles@1.0.0
│ │ ├── has-color@0.1.7
│ │ └── strip-ansi@0.1.1
│ ├─┬ gzip-size@0.1.1
│ │ ├─┬ concat-stream@1.4.6
│ │ │ ├── inherits@2.0.1
│ │ │ ├─┬ readable-stream@1.1.13
│ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ ├── isarray@0.0.1
│ │ │ │ └── string_decoder@0.10.31
│ │ │ └── typedarray@0.0.6
│ │ └─┬ zlib-browserify@0.0.3
│ │ └─┬ tape@0.2.2
│ │ ├── deep-equal@0.0.0
│ │ ├── defined@0.0.0
│ │ └── jsonify@0.0.0
│ └── pretty-bytes@0.1.2
├─┬ grunt-contrib-uglify@0.4.1
│ ├─┬ chalk@0.4.0
│ │ ├── ansi-styles@1.0.0
│ │ ├── has-color@0.1.7
│ │ └── strip-ansi@0.1.1
│ ├─┬ maxmin@0.1.0
│ │ ├─┬ gzip-size@0.1.1
│ │ │ ├─┬ concat-stream@1.4.6
│ │ │ │ ├── inherits@2.0.1
│ │ │ │ ├─┬ readable-stream@1.1.13
│ │ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ │ ├── isarray@0.0.1
│ │ │ │ │ └── string_decoder@0.10.31
│ │ │ │ └── typedarray@0.0.6
│ │ │ └─┬ zlib-browserify@0.0.3
│ │ │ └─┬ tape@0.2.2
│ │ │ ├── deep-equal@0.0.0
│ │ │ ├── defined@0.0.0
│ │ │ └── jsonify@0.0.0
│ │ └── pretty-bytes@0.1.2
│ └─┬ uglify-js@2.4.15
│ ├── async@0.2.10
│ ├─┬ optimist@0.3.7
│ │ └── wordwrap@0.0.2
│ ├─┬ source-map@0.1.34
│ │ └── amdefine@0.1.0
│ └── uglify-to-browserify@1.0.2
├─┬ grunt-contrib-watch@0.5.3
│ ├─┬ gaze@0.4.3
│ │ └─┬ globule@0.1.0
│ │ ├─┬ glob@3.1.21
│ │ │ ├── graceful-fs@1.2.3
│ │ │ └── inherits@1.0.0
│ │ ├── lodash@1.0.1
│ │ └─┬ minimatch@0.2.14
│ │ ├── lru-cache@2.5.0
│ │ └── sigmund@1.0.0
│ └─┬ tiny-lr@0.0.4
│ ├── debug@0.7.4
│ ├── faye-websocket@0.4.4
│ ├─┬ noptify@0.0.3
│ │ └─┬ nopt@2.0.0
│ │ └── abbrev@1.0.5
│ └── qs@0.5.6
├── grunt-karma@0.8.3
├── grunt-protractor-runner@1.1.4
├── grunt-sails-linker@0.9.5
├─┬ grunt-sync@0.0.8
│ └── promised-io@0.3.3
├── html2js@0.0.3
├─┬ include-all@0.1.6
│ └── underscore.string@2.3.1
├─┬ karma@0.12.22
│ ├─┬ chokidar@0.8.4
│ │ ├─┬ fsevents@0.2.1 (git://github.com/pipobscure/fsevents#7dcdf9fa3f8956610fd6f69f72c67bace2de7138)
│ │ │ └── nan@0.8.0
│ │ └── recursive-readdir@0.0.2
│ ├── colors@0.6.2
│ ├─┬ connect@2.12.0
│ │ ├── batch@0.5.0
│ │ ├── buffer-crc32@0.2.1
│ │ ├── bytes@0.2.1
│ │ ├── cookie@0.1.0
│ │ ├── cookie-signature@1.0.1
│ │ ├── debug@0.8.1
│ │ ├── fresh@0.2.0
│ │ ├── methods@0.1.0
│ │ ├─┬ multiparty@2.2.0
│ │ │ ├─┬ readable-stream@1.1.13
│ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ ├── inherits@2.0.1
│ │ │ │ ├── isarray@0.0.1
│ │ │ │ └── string_decoder@0.10.31
│ │ │ └── stream-counter@0.2.0
│ │ ├── negotiator@0.3.0
│ │ ├── pause@0.0.1
│ │ ├── qs@0.6.6
│ │ ├── raw-body@1.1.2
│ │ ├─┬ send@0.1.4
│ │ │ └── range-parser@0.0.4
│ │ └── uid2@0.0.3
│ ├── di@0.0.1
│ ├─┬ glob@3.2.11
│ │ ├── inherits@2.0.1
│ │ └─┬ minimatch@0.3.0
│ │ ├── lru-cache@2.5.0
│ │ └── sigmund@1.0.0
│ ├── graceful-fs@2.0.3
│ ├─┬ http-proxy@0.10.4
│ │ ├── pkginfo@0.3.0
│ │ └─┬ utile@0.2.1
│ │ ├── async@0.2.10
│ │ ├── deep-equal@0.2.1
│ │ ├── i@0.3.2
│ │ ├─┬ mkdirp@0.5.0
│ │ │ └── minimist@0.0.8
│ │ └── ncp@0.4.2
│ ├─┬ log4js@0.6.19
│ │ ├── async@0.1.15
│ │ ├─┬ readable-stream@1.0.31
│ │ │ ├── core-util-is@1.0.1
│ │ │ ├── inherits@2.0.1
│ │ │ ├── isarray@0.0.1
│ │ │ └── string_decoder@0.10.31
│ │ └── semver@1.1.4
│ ├── mime@1.2.11
│ ├─┬ minimatch@0.2.14
│ │ ├── lru-cache@2.5.0
│ │ └── sigmund@1.0.0
│ ├─┬ optimist@0.6.1
│ │ ├── minimist@0.0.10
│ │ └── wordwrap@0.0.2
│ ├── q@0.9.7
│ ├── rimraf@2.2.8
│ ├─┬ socket.io@0.9.17
│ │ ├── base64id@0.1.0
│ │ ├── policyfile@0.0.4
│ │ ├── redis@0.7.3
│ │ └─┬ socket.io-client@0.9.16
│ │ ├─┬ active-x-obfuscator@0.0.1
│ │ │ └── zeparser@0.0.5
│ │ ├── uglify-js@1.2.5
│ │ ├─┬ ws@0.4.32
│ │ │ ├── commander@2.1.0
│ │ │ ├── nan@1.0.0
│ │ │ ├── options@0.0.5
│ │ │ └── tinycolor@0.0.1
│ │ └── xmlhttprequest@1.4.2
│ ├─┬ source-map@0.1.38
│ │ └── amdefine@0.1.0
│ └─┬ useragent@2.0.9
│ └── lru-cache@2.2.4
├── karma-chrome-launcher@0.1.4
├── karma-firefox-launcher@0.1.3
├── karma-ie-launcher@0.1.5
├── karma-jasmine@0.2.2
├─┬ karma-junit-reporter@0.2.2
│ └── xmlbuilder@0.4.2
├── karma-ng-html2js-preprocessor@0.1.0
├─┬ karma-phantomjs-launcher@0.1.4
│ └─┬ phantomjs@1.9.7-15
│ ├── adm-zip@0.2.1
│ ├── kew@0.1.7
│ ├── mkdirp@0.3.5
│ ├── ncp@0.4.2
│ ├─┬ npmconf@0.0.24
│ │ ├─┬ config-chain@1.1.8
│ │ │ └── proto-list@1.2.3
│ │ ├── inherits@1.0.0
│ │ ├── ini@1.1.0
│ │ ├─┬ nopt@2.2.1
│ │ │ └── abbrev@1.0.5
│ │ ├── once@1.1.1
│ │ ├── osenv@0.0.3
│ │ └── semver@1.1.4
│ ├── progress@1.1.8
│ ├─┬ request@2.36.0
│ │ ├── aws-sign2@0.5.0
│ │ ├── forever-agent@0.5.2
│ │ ├─┬ form-data@0.1.4
│ │ │ ├── async@0.9.0
│ │ │ └─┬ combined-stream@0.0.5
│ │ │ └── delayed-stream@0.0.5
│ │ ├─┬ hawk@1.0.0
│ │ │ ├── boom@0.4.2
│ │ │ ├── cryptiles@0.2.2
│ │ │ ├── hoek@0.9.1
│ │ │ └── sntp@0.2.4
│ │ ├─┬ http-signature@0.10.0
│ │ │ ├── asn1@0.1.11
│ │ │ ├── assert-plus@0.1.2
│ │ │ └── ctype@0.5.2
│ │ ├── json-stringify-safe@5.0.0
│ │ ├── mime@1.2.11
│ │ ├── node-uuid@1.4.1
│ │ ├── oauth-sign@0.3.0
│ │ ├── qs@0.6.6
│ │ ├─┬ tough-cookie@0.12.1
│ │ │ └── punycode@1.3.1
│ │ └── tunnel-agent@0.4.0
│ ├─┬ request-progress@0.3.1
│ │ └── throttleit@0.0.2
│ ├── rimraf@2.2.8
│ └── which@1.0.5
├── lodash@2.4.1
├── moment@2.8.2
├─┬ passport@0.2.0
│ ├── passport-strategy@1.0.0
│ └── pause@0.0.1
├─┬ passport-local@1.0.0
│ └── passport-strategy@1.0.0
├─┬ protractor@1.1.1
│ ├── adm-zip@0.4.4
│ ├─┬ glob@3.2.11
│ │ ├── inherits@2.0.1
│ │ └─┬ minimatch@0.3.0
│ │ ├── lru-cache@2.5.0
│ │ └── sigmund@1.0.0
│ ├── jasminewd@1.0.4
│ ├── minijasminenode@1.1.1
│ ├─┬ optimist@0.6.1
│ │ ├── minimist@0.0.10
│ │ └── wordwrap@0.0.2
│ ├── q@1.0.0
│ ├─┬ request@2.36.0
│ │ ├── aws-sign2@0.5.0
│ │ ├── forever-agent@0.5.2
│ │ ├─┬ form-data@0.1.4
│ │ │ ├── async@0.9.0
│ │ │ └─┬ combined-stream@0.0.5
│ │ │ └── delayed-stream@0.0.5
│ │ ├─┬ hawk@1.0.0
│ │ │ ├── boom@0.4.2
│ │ │ ├── cryptiles@0.2.2
│ │ │ ├── hoek@0.9.1
│ │ │ └── sntp@0.2.4
│ │ ├─┬ http-signature@0.10.0
│ │ │ ├── asn1@0.1.11
│ │ │ ├── assert-plus@0.1.2
│ │ │ └── ctype@0.5.2
│ │ ├── json-stringify-safe@5.0.0
│ │ ├── mime@1.2.11
│ │ ├── node-uuid@1.4.1
│ │ ├── oauth-sign@0.3.0
│ │ ├── qs@0.6.6
│ │ ├─┬ tough-cookie@0.12.1
│ │ │ └── punycode@1.3.1
│ │ └── tunnel-agent@0.4.0
│ ├── saucelabs@0.1.1
│ ├── selenium-webdriver@2.42.1
│ └─┬ source-map-support@0.2.7
│ └─┬ source-map@0.1.32
│ └── amdefine@0.1.0
├── q@1.0.1
├─┬ rc@0.5.0
│ ├── deep-extend@0.2.11
│ ├── ini@1.1.0
│ ├── minimist@0.0.10
│ └── strip-json-comments@0.1.3
├─┬ sails@0.10.4
│ ├─┬ anchor@0.10.0-rc2
│ │ └── validator@3.3.0
│ ├── async@0.2.10
│ ├─┬ captains-log@0.11.11
│ │ └─┬ rc@0.3.5
│ │ ├── deep-extend@0.2.11
│ │ ├── ini@1.1.0
│ │ └── minimist@0.0.10
│ ├── colors@0.6.2
│ ├── commander@2.1.0
│ ├── connect-flash@0.1.1
│ ├── ejs-locals@1.0.2
│ ├─┬ express@3.4.3
│ │ ├── buffer-crc32@0.2.1
│ │ ├─┬ commander@1.3.2
│ │ │ └── keypress@0.1.0
│ │ ├─┬ connect@2.10.1
│ │ │ ├── bytes@0.2.0
│ │ │ ├─┬ multiparty@2.2.0
│ │ │ │ ├─┬ readable-stream@1.1.13
│ │ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ │ ├── inherits@2.0.1
│ │ │ │ │ ├── isarray@0.0.1
│ │ │ │ │ └── string_decoder@0.10.31
│ │ │ │ └── stream-counter@0.2.0
│ │ │ ├── negotiator@0.2.8
│ │ │ ├── pause@0.0.1
│ │ │ ├── qs@0.6.5
│ │ │ ├── raw-body@0.0.3
│ │ │ └── uid2@0.0.2
│ │ ├── cookie@0.1.0
│ │ ├── cookie-signature@1.0.1
│ │ ├─┬ debug@1.0.4
│ │ │ └── ms@0.6.2
│ │ ├── fresh@0.2.0
│ │ ├── methods@0.0.1
│ │ ├── mkdirp@0.3.5
│ │ ├── range-parser@0.0.4
│ │ └─┬ send@0.1.4
│ │ └── mime@1.2.11
│ ├─┬ express3-handlebars@0.5.2
│ │ └─┬ handlebars@1.3.0
│ │ ├─┬ optimist@0.3.7
│ │ │ └── wordwrap@0.0.2
│ │ └─┬ uglify-js@2.3.6
│ │ └─┬ source-map@0.1.38
│ │ └── amdefine@0.1.0
│ ├─┬ fs-extra@0.8.1
│ │ ├── jsonfile@1.1.1
│ │ ├── mkdirp@0.3.5
│ │ ├── ncp@0.4.2
│ │ └── rimraf@2.2.8
│ ├─┬ glob@3.2.11
│ │ ├── inherits@2.0.1
│ │ └─┬ minimatch@0.3.0
│ │ ├── lru-cache@2.5.0
│ │ └── sigmund@1.0.0
│ ├─┬ grunt-cli@0.1.13
│ │ ├── findup-sync@0.1.3
│ │ ├─┬ nopt@1.0.10
│ │ │ └── abbrev@1.0.5
│ │ └── resolve@0.3.1
│ ├─┬ grunt-contrib-less@0.11.1
│ │ ├─┬ chalk@0.4.0
│ │ │ ├── ansi-styles@1.0.0
│ │ │ ├── has-color@0.1.7
│ │ │ └── strip-ansi@0.1.1
│ │ ├─┬ less@1.7.4
│ │ │ ├── clean-css@2.1.8
│ │ │ ├── graceful-fs@2.0.3
│ │ │ ├── mime@1.2.11
│ │ │ ├── mkdirp@0.3.5
│ │ │ ├─┬ request@2.34.0
│ │ │ │ ├── aws-sign2@0.5.0
│ │ │ │ ├── forever-agent@0.5.2
│ │ │ │ ├─┬ form-data@0.1.4
│ │ │ │ │ ├── async@0.9.0
│ │ │ │ │ └─┬ combined-stream@0.0.5
│ │ │ │ │ └── delayed-stream@0.0.5
│ │ │ │ ├─┬ hawk@1.0.0
│ │ │ │ │ ├── boom@0.4.2
│ │ │ │ │ ├── cryptiles@0.2.2
│ │ │ │ │ ├── hoek@0.9.1
│ │ │ │ │ └── sntp@0.2.4
│ │ │ │ ├─┬ http-signature@0.10.0
│ │ │ │ │ ├── asn1@0.1.11
│ │ │ │ │ ├── assert-plus@0.1.2
│ │ │ │ │ └── ctype@0.5.2
│ │ │ │ ├── json-stringify-safe@5.0.0
│ │ │ │ ├── oauth-sign@0.3.0
│ │ │ │ ├── qs@0.6.6
│ │ │ │ ├─┬ tough-cookie@0.12.1
│ │ │ │ │ └── punycode@1.3.1
│ │ │ │ └── tunnel-agent@0.3.0
│ │ │ └─┬ source-map@0.1.38
│ │ │ └── amdefine@0.1.0
│ │ └─┬ maxmin@0.1.0
│ │ ├─┬ gzip-size@0.1.1
│ │ │ ├─┬ concat-stream@1.4.6
│ │ │ │ ├── inherits@2.0.1
│ │ │ │ ├─┬ readable-stream@1.1.13
│ │ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ │ ├── isarray@0.0.1
│ │ │ │ │ └── string_decoder@0.10.31
│ │ │ │ └── typedarray@0.0.6
│ │ │ └─┬ zlib-browserify@0.0.3
│ │ │ └─┬ tape@0.2.2
│ │ │ ├── deep-equal@0.0.0
│ │ │ ├── defined@0.0.0
│ │ │ └── jsonify@0.0.0
│ │ └── pretty-bytes@0.1.2
│ ├─┬ i18n@0.5.0
│ │ ├─┬ debug@1.0.4
│ │ │ └── ms@0.6.2
│ │ ├── mustache@0.8.2
│ │ └── sprintf@0.1.4
│ ├── merge-defaults@0.1.4
│ ├── mock-req@0.1.0
│ ├── mock-res@0.1.0
│ ├── node-uuid@1.4.1
│ ├── pluralize@0.0.12
│ ├─┬ prompt@0.2.13
│ │ ├── pkginfo@0.3.0
│ │ ├─┬ read@1.0.5
│ │ │ └── mute-stream@0.0.4
│ │ ├── revalidator@0.1.8
│ │ ├─┬ utile@0.2.1
│ │ │ ├── deep-equal@0.2.1
│ │ │ ├── i@0.3.2
│ │ │ ├─┬ mkdirp@0.5.0
│ │ │ │ └── minimist@0.0.8
│ │ │ ├── ncp@0.4.2
│ │ │ └── rimraf@2.2.8
│ │ └─┬ winston@0.6.2
│ │ ├── async@0.1.22
│ │ ├── cycle@1.0.3
│ │ ├── eyes@0.1.8
│ │ ├── pkginfo@0.2.3
│ │ ├── request@2.9.203
│ │ └── stack-trace@0.0.9
│ ├─┬ reportback@0.1.8
│ │ └── node-switchback@0.0.4
│ ├── sails-build-dictionary@0.10.1
│ ├─┬ sails-disk@0.10.3
│ │ ├── waterline-criteria@0.10.7
│ │ ├─┬ waterline-cursor@0.0.5
│ │ │ └── async@0.9.0
│ │ └── waterline-errors@0.10.0-rc1
│ ├─┬ sails-generate@0.11.2
│ │ ├── sails-generate-adapter@0.10.4
│ │ ├── sails-generate-backend@0.11.3
│ │ ├─┬ sails-generate-controller@0.10.7
│ │ │ ├── pluralize@0.0.9
│ │ │ └── underscore.string@2.3.3
│ │ ├── sails-generate-frontend@0.10.20
│ │ ├── sails-generate-generator@0.10.11
│ │ ├── sails-generate-gruntfile@0.10.10
│ │ ├─┬ sails-generate-model@0.10.9
│ │ │ └── underscore.string@2.3.3
│ │ ├── sails-generate-new@0.10.17
│ │ ├── sails-generate-views@0.10.3
│ │ └── sails-generate-views-jade@0.10.3
│ ├── sails-stringfile@0.3.2
│ ├─┬ sails-util@0.10.4
│ │ ├── json-stringify-safe@5.0.0
│ │ ├── node-switchback@0.0.2
│ │ ├─┬ optimist@0.6.1
│ │ │ ├── minimist@0.0.10
│ │ │ └── wordwrap@0.0.2
│ │ └── underscore.string@2.3.3
│ ├── semver@2.2.1
│ ├─┬ skipper@0.5.3
│ │ ├─┬ connect@2.25.7
│ │ │ ├── basic-auth-connect@1.0.0
│ │ │ ├─┬ body-parser@1.6.5
│ │ │ │ ├── iconv-lite@0.4.4
│ │ │ │ ├─┬ on-finished@2.1.0
│ │ │ │ │ └── ee-first@1.0.5
│ │ │ │ └── raw-body@1.3.0
│ │ │ ├── bytes@1.0.0
│ │ │ ├─┬ compression@1.0.11
│ │ │ │ ├─┬ accepts@1.0.7
│ │ │ │ │ ├── mime-types@1.0.2
│ │ │ │ │ └── negotiator@0.4.7
│ │ │ │ ├── compressible@1.1.1
│ │ │ │ └── vary@1.0.0
│ │ │ ├─┬ connect-timeout@1.2.2
│ │ │ │ └── ms@0.6.2
│ │ │ ├── cookie@0.1.2
│ │ │ ├── cookie-parser@1.3.2
│ │ │ ├── cookie-signature@1.0.4
│ │ │ ├─┬ csurf@1.4.1
│ │ │ │ └─┬ csrf@2.0.1
│ │ │ │ ├── base64-url@1.0.0
│ │ │ │ ├── rndm@1.0.0
│ │ │ │ ├── scmp@0.0.3
│ │ │ │ └─┬ uid-safe@1.0.1
│ │ │ │ └─┬ mz@1.0.1
│ │ │ │ └── native-or-bluebird@1.0.0
│ │ │ ├─┬ debug@1.0.4
│ │ │ │ └── ms@0.6.2
│ │ │ ├── depd@0.4.4
│ │ │ ├─┬ errorhandler@1.1.1
│ │ │ │ ├─┬ accepts@1.0.7
│ │ │ │ │ ├── mime-types@1.0.2
│ │ │ │ │ └── negotiator@0.4.7
│ │ │ │ └── escape-html@1.0.1
│ │ │ ├─┬ express-session@1.7.6
│ │ │ │ ├── buffer-crc32@0.2.3
│ │ │ │ ├─┬ uid-safe@1.0.1
│ │ │ │ │ ├── base64-url@1.0.0
│ │ │ │ │ └─┬ mz@1.0.1
│ │ │ │ │ └── native-or-bluebird@1.0.0
│ │ │ │ └── utils-merge@1.0.0
│ │ │ ├─┬ finalhandler@0.1.0
│ │ │ │ └── escape-html@1.0.1
│ │ │ ├── fresh@0.2.2
│ │ │ ├── media-typer@0.2.0
│ │ │ ├─┬ method-override@2.1.3
│ │ │ │ ├── methods@1.1.0
│ │ │ │ └── vary@1.0.0
│ │ │ ├─┬ morgan@1.2.3
│ │ │ │ ├── basic-auth@1.0.0
│ │ │ │ └─┬ on-finished@2.1.0
│ │ │ │ └── ee-first@1.0.5
│ │ │ ├─┬ multiparty@3.3.2
│ │ │ │ ├─┬ readable-stream@1.1.13
│ │ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ │ ├── inherits@2.0.1
│ │ │ │ │ └── isarray@0.0.1
│ │ │ │ └── stream-counter@0.2.0
│ │ │ ├── on-headers@1.0.0
│ │ │ ├── parseurl@1.3.0
│ │ │ ├── pause@0.0.1
│ │ │ ├── qs@1.2.2
│ │ │ ├── response-time@2.0.1
│ │ │ ├── serve-favicon@2.0.1
│ │ │ ├─┬ serve-index@1.1.6
│ │ │ │ ├─┬ accepts@1.0.7
│ │ │ │ │ ├── mime-types@1.0.2
│ │ │ │ │ └── negotiator@0.4.7
│ │ │ │ └── batch@0.5.1
│ │ │ ├─┬ serve-static@1.5.3
│ │ │ │ ├── escape-html@1.0.1
│ │ │ │ ├─┬ send@0.8.3
│ │ │ │ │ ├── destroy@1.0.3
│ │ │ │ │ ├── mime@1.2.11
│ │ │ │ │ ├── ms@0.6.2
│ │ │ │ │ ├─┬ on-finished@2.1.0
│ │ │ │ │ │ └── ee-first@1.0.5
│ │ │ │ │ └── range-parser@1.0.0
│ │ │ │ └── utils-merge@1.0.0
│ │ │ ├─┬ type-is@1.3.2
│ │ │ │ └── mime-types@1.0.2
│ │ │ └── vhost@2.0.0
│ │ ├── dot-access@0.0.3
│ │ ├── guid@0.0.12
│ │ ├─┬ multiparty@3.2.10
│ │ │ ├─┬ readable-stream@1.1.13
│ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ ├── inherits@2.0.1
│ │ │ │ └── isarray@0.0.1
│ │ │ └── stream-counter@0.2.0
│ │ ├── skipper-disk@0.5.3
│ │ └── string_decoder@0.10.31
│ ├─┬ socket.io@0.9.17
│ │ ├── base64id@0.1.0
│ │ ├── policyfile@0.0.4
│ │ ├── redis@0.7.3
│ │ └─┬ socket.io-client@0.9.16
│ │ ├─┬ active-x-obfuscator@0.0.1
│ │ │ └── zeparser@0.0.5
│ │ ├── uglify-js@1.2.5
│ │ ├─┬ ws@0.4.32
│ │ │ ├── nan@1.0.0
│ │ │ ├── options@0.0.5
│ │ │ └── tinycolor@0.0.1
│ │ └── xmlhttprequest@1.4.2
│ └─┬ waterline@0.10.8
│ ├── async@0.9.0
│ ├── deep-diff@0.1.7
│ ├── node-switchback@0.1.2
│ ├── waterline-criteria@0.10.7
│ └── waterline-schema@0.1.15
└─┬ sails-mysql@0.10.6
├── async@0.9.0
├─┬ mysql@2.3.2
│ ├── bignumber.js@1.4.0
│ ├─┬ readable-stream@1.1.13
│ │ ├── core-util-is@1.0.1
│ │ ├── inherits@2.0.1
│ │ ├── isarray@0.0.1
│ │ └── string_decoder@0.10.31
│ └── require-all@0.0.8
├── waterline-cursor@0.0.5
├── waterline-errors@0.10.0-rc1
└── waterline-sequel@0.0.16
@feitla Unfortunately the solution is just to watch less files until node v0.12
lands as the fix will not be back ported: https://github.com/joyent/node/issues/5463
For future visitors from Google: check that you're not accidentally including bower or node_modules directories :~) Oops!
Just add "!**/node_modules/**/*"
(or whatever) to the end of your watch globs array if you're not sure. There's also another comment in this list that details how to list all the watched files.
I ran into this using gulp with a watch. Commenting here because this is the first Google result for the error, and it's relevant.
Thanks @ggranum ! Works for me.
thanks everyone! this SMA!
@ggranum thank you
@ggranum thank you, this solve problems :)
Thanks @ggranum!
Avoid watching items in the "bower_components" folder too.
[
"!**/node_modules/**/*",
"!**/bower_components/**/*"
]
How can this possibly be closed? "Watch fewer files" is not a solution, nor is excluding node_modules folders. What if my org has a module that has a linked module where we develop our sass code?
@dclowd9901 We accept pull requests if you know a better solution.
@EvanLovely Where should I add these to avoid watching? Thanks!
@chetangautam Add them anywhere you're declaring files to watch.
@EvanLovely Thanks!
I have an issue where on every 3rd save I get this: ERROR
It appears when I either save it 3 times within the same file or if I open up 3 different files, the error will appear afte the 3rd file has been saved.
Here's my code:
I basically have a folder structure that contains a template.html and an email.html. I work within the template.html and on every save, it creates the email.html that inlines the css and minifies the code.