Open DamonOehlman opened 10 years ago
install is already pretty verbose, but maybe not verbose enough. which projects are slow?
My guess is that it's related to git urls or something.
Agreed in most cases the install command is pretty talkative, but in particular scenarios, it goes go quiet. Here are a few projects that you can probably recreate the behaviour I'm seeing.
Do a git clone
and then npmd install
and I'd hope you replicate what I'm seeing...
For convenience, I've included the output of npm list
for each of the projects. I've certainly seen more than one project that uses grunt cause this problem.
gallery@0.0.1 /home/doehlman/code/github/gallery-css
├─┬ autoprefixer@0.5.20130629
│ ├── css-parse@1.5.3
│ └── css-stringify@1.3.2
├─┬ 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-autoprefixer@0.1.20130615
├── grunt-contrib-clean@0.4.1
├─┬ 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.3
│ ├── 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-csslint@0.1.2
│ └── csslint@0.9.10
├─┬ grunt-contrib-cssmin@0.4.1
│ ├─┬ clean-css@0.10.2
│ │ └─┬ commander@1.1.1
│ │ └── keypress@0.1.0
│ └─┬ grunt-lib-contrib@0.5.3
│ └── zlib-browserify@0.0.1
├─┬ grunt-contrib-sass@0.2.2
│ └─┬ grunt-lib-contrib@0.5.3
│ └── zlib-browserify@0.0.1
├─┬ grunt-contrib-watch@0.3.1
│ └─┬ gaze@0.3.4
│ ├─┬ fileset@0.1.5
│ │ └─┬ glob@3.2.7
│ │ └── inherits@2.0.1
│ └─┬ minimatch@0.2.12
│ ├── lru-cache@2.3.1
│ └── sigmund@1.0.0
├─┬ grunt-recess@0.3.5
│ ├─┬ grunt-lib-contrib@0.6.1
│ │ └── zlib-browserify@0.0.1
│ └─┬ recess@1.1.9
│ ├── colors@0.6.2
│ ├─┬ less@1.3.3
│ │ └── ycssmin@1.0.1
│ ├─┬ nopt@2.1.2
│ │ └── abbrev@1.0.4
│ ├── underscore@1.5.2
│ └── watch@0.8.0
├─┬ grunt-s3@0.2.0-alpha.3
│ ├─┬ knox@0.8.6
│ │ ├── debug@0.7.3
│ │ ├─┬ stream-counter@0.1.0
│ │ │ └── readable-stream@1.0.17
│ │ └─┬ xml2js@0.2.8
│ │ └── sax@0.5.5
│ ├── mime@1.2.11
│ ├─┬ temporary@0.0.5
│ │ └── package@1.0.1
│ └── underscore.deferred@0.1.5
├─┬ matchdep@0.1.2
│ └─┬ minimatch@0.2.12
│ ├── lru-cache@2.3.1
│ └── sigmund@1.0.0
└─┬ tilde-expansion@0.0.0
└─┬ etc-passwd@0.0.1
└── lazylines@1.0.0
south-im@0.0.0 /home/doehlman/code/github/south.im
├── async@0.2.9
├── beats@0.0.0
├─┬ beefy@0.4.5
│ ├── colors@0.6.2
│ ├── mime@1.2.11
│ ├─┬ nopt@2.1.2
│ │ └── abbrev@1.0.4
│ ├── open@0.0.3
│ ├─┬ portfinder@0.2.1
│ │ └── mkdirp@0.0.7
│ ├── response-stream@0.0.0
│ ├─┬ script-injector@0.1.6
│ │ ├── duplexer@0.1.1
│ │ ├── through@2.3.4
│ │ └─┬ trumpet@1.5.6
│ │ ├── buffers@0.1.1
│ │ ├── ent@0.0.7
│ │ └── sax@0.5.5
│ ├── sse-stream@0.0.4
│ ├── through@2.2.7
│ └─┬ watchr@2.4.4
│ ├─┬ bal-util@2.3.2
│ │ ├── ambi@2.1.6
│ │ ├── extract-opts@2.2.0
│ │ └── taskgroup@3.3.1
│ ├── eachr@2.0.2
│ ├── extendr@2.1.0
│ ├─┬ safefs@3.0.4
│ │ └─┬ taskgroup@3.3.1
│ │ └── ambi@2.1.6
│ ├─┬ taskgroup@3.2.4
│ │ └── ambi@2.1.6
│ └── typechecker@2.0.8
├─┬ bicubic-sample@0.0.1
│ └── bicubic@0.0.0
├── box-frustum@0.0.0
├─┬ brfs@0.0.8
│ ├─┬ escodegen@0.0.17
│ │ ├── esprima@1.0.4
│ │ ├── estraverse@0.0.4
│ │ └─┬ source-map@0.1.31
│ │ └── amdefine@0.1.0
│ ├─┬ falafel@0.1.6
│ │ └── esprima@1.0.4
│ └── through@2.2.7
├─┬ browserify@2.33.1
│ ├─┬ browser-builtins@2.0.4
│ │ ├─┬ buffer-browserify@0.2.2
│ │ │ └── base64-js@0.0.2
│ │ ├── console-browserify@1.0.1
│ │ ├── constants-browserify@0.0.1
│ │ ├── crypto-browserify@1.0.6
│ │ ├─┬ http-browserify@0.1.14
│ │ │ └── Base64@0.1.4
│ │ ├── os-browserify@0.1.1
│ │ ├── punycode@1.2.3
│ │ ├── vm-browserify@0.0.1
│ │ └─┬ zlib-browserify@0.0.3
│ │ └─┬ tape@0.2.2
│ │ ├── deep-equal@0.0.0
│ │ ├── defined@0.0.0
│ │ └── jsonify@0.0.0
│ ├─┬ browser-pack@0.11.1
│ │ └─┬ combine-source-map@0.2.0
│ │ ├── convert-source-map@0.2.6
│ │ ├── inline-source-map@0.2.5
│ │ └─┬ source-map@0.1.31
│ │ └── amdefine@0.1.0
│ ├─┬ browser-resolve@1.1.4
│ │ └── resolve@0.5.1
│ ├─┬ concat-stream@1.0.1
│ │ └─┬ bops@0.0.6
│ │ ├── base64-js@0.0.2
│ │ └── to-utf8@0.0.1
│ ├─┬ deps-sort@0.1.1
│ │ └── minimist@0.0.5
│ ├── duplexer@0.1.1
│ ├── inherits@1.0.0
│ ├─┬ insert-module-globals@1.3.1
│ │ ├── commondir@0.0.1
│ │ ├── duplexer@0.0.4
│ │ ├─┬ JSONStream@0.4.4
│ │ │ └── jsonparse@0.0.5
│ │ ├─┬ lexical-scope@0.0.14
│ │ │ └─┬ astw@0.0.0
│ │ │ └── esprima@1.0.2
│ │ ├── process@0.5.1
│ │ └── through@2.2.7
│ ├─┬ JSONStream@0.6.4
│ │ ├── jsonparse@0.0.5
│ │ └── through@2.2.7
│ ├─┬ module-deps@1.0.2
│ │ ├─┬ detective@2.1.2
│ │ │ ├─┬ escodegen@0.0.15
│ │ │ │ └─┬ source-map@0.1.31
│ │ │ │ └── amdefine@0.1.0
│ │ │ └── esprima@1.0.2
│ │ ├── minimist@0.0.5
│ │ └── resolve@0.4.3
│ ├─┬ optimist@0.5.2
│ │ └── wordwrap@0.0.2
│ ├── parents@0.0.1
│ ├── shell-quote@0.0.1
│ ├─┬ stream-combiner@0.0.2
│ │ └── duplexer@0.0.4
│ ├─┬ syntax-error@0.0.1
│ │ └── esprima@0.9.9
│ └─┬ umd@1.1.1
│ ├─┬ rfile@1.0.0
│ │ ├── callsite@1.0.0
│ │ └── resolve@0.3.1
│ ├── ruglify@1.0.0
│ └─┬ uglify-js@2.2.5
│ ├─┬ optimist@0.3.7
│ │ └── wordwrap@0.0.2
│ └─┬ source-map@0.1.31
│ └── amdefine@0.1.0
├── clamp@0.0.0
├── clone@0.1.11
├─┬ colony@0.0.4
│ ├── async@0.1.22
│ ├── ejs@0.8.4
│ ├── highlight.js@7.2.0
│ ├── marked@0.2.10
│ ├─┬ optimist@0.3.7
│ │ └── wordwrap@0.0.2
│ ├─┬ reqursive@0.0.6
│ │ ├─┬ detective@0.2.1
│ │ │ └── esprima@0.9.9
│ │ └── nub@0.0.0
│ └── wrench@1.3.9
├─┬ constantify@0.1.0
│ ├─┬ astw@0.0.0
│ │ └── esprima@1.0.2
│ ├─┬ escodegen@0.0.27
│ │ ├── estraverse@1.3.2
│ │ └─┬ source-map@0.1.31
│ │ └── amdefine@0.1.0
│ ├── esprima@1.0.4
│ └── static-eval@0.0.0
├─┬ continuous-observer@0.2.0
│ ├── cell-range@0.0.0
│ └── dup@0.0.0
├─┬ continuous-storage@0.1.1
│ └── isndarray@0.1.0
├─┬ cwise@0.4.0
│ ├─┬ cwise-compiler@0.1.0
│ │ └── uniq@0.0.2
│ └─┬ cwise-parser@0.0.1
│ ├── esprima@1.0.4
│ └── uniq@0.0.2
├─┬ disc@0.3.3
│ ├─┬ browser-builtins@1.0.7
│ │ ├─┬ buffer-browserify@0.1.0
│ │ │ └── base64-js@0.0.2
│ │ ├── console-browserify@0.1.6
│ │ ├── constants-browserify@0.0.1
│ │ ├── crypto-browserify@1.0.6
│ │ ├─┬ http-browserify@0.1.14
│ │ │ ├── Base64@0.1.4
│ │ │ └─┬ concat-stream@1.0.1
│ │ │ └─┬ bops@0.0.6
│ │ │ ├── base64-js@0.0.2
│ │ │ └── to-utf8@0.0.1
│ │ ├── punycode@1.2.3
│ │ ├── resolve@0.3.1
│ │ ├── vm-browserify@0.0.1
│ │ └─┬ zlib-browserify@0.0.3
│ │ └─┬ tape@0.2.2
│ │ ├── deep-equal@0.0.0
│ │ ├── defined@0.0.0
│ │ └── jsonify@0.0.0
│ ├─┬ browser-pack@0.10.2
│ │ ├─┬ combine-source-map@0.1.3
│ │ │ ├── convert-source-map@0.2.6
│ │ │ ├─┬ inline-source-map@0.2.5
│ │ │ │ └─┬ source-map@0.1.31
│ │ │ │ └── amdefine@0.1.0
│ │ │ └── parse-base64vlq-mappings@0.1.4
│ │ └─┬ JSONStream@0.6.4
│ │ ├── jsonparse@0.0.5
│ │ └── through@2.2.7
│ ├── commondir@0.0.1
│ ├─┬ deps-sort@0.1.1
│ │ ├─┬ JSONStream@0.6.4
│ │ │ ├── jsonparse@0.0.5
│ │ │ └── through@2.2.7
│ │ └── minimist@0.0.5
│ ├─┬ file-size-tree@0.0.0
│ │ └── flat@1.0.0
│ ├─┬ insert-module-globals@1.2.1
│ │ ├── duplexer@0.0.4
│ │ ├─┬ JSONStream@0.4.4
│ │ │ └── jsonparse@0.0.5
│ │ ├─┬ lexical-scope@0.0.14
│ │ │ └─┬ astw@0.0.0
│ │ │ └── esprima@1.0.2
│ │ ├── process@0.5.1
│ │ └── through@2.2.7
│ ├─┬ module-deps@1.0.2
│ │ ├─┬ browser-resolve@1.1.4
│ │ │ └── resolve@0.5.1
│ │ ├─┬ concat-stream@1.0.1
│ │ │ └─┬ bops@0.0.6
│ │ │ ├── base64-js@0.0.2
│ │ │ └── to-utf8@0.0.1
│ │ ├─┬ detective@2.1.2
│ │ │ ├─┬ escodegen@0.0.15
│ │ │ │ └─┬ source-map@0.1.31
│ │ │ │ └── amdefine@0.1.0
│ │ │ └── esprima@1.0.2
│ │ ├─┬ JSONStream@0.6.4
│ │ │ ├── jsonparse@0.0.5
│ │ │ └── through@2.2.7
│ │ └── minimist@0.0.5
│ ├── once@1.1.1
│ ├── opener@1.3.0
│ ├─┬ optimist@0.6.0
│ │ ├── minimist@0.0.5
│ │ └── wordwrap@0.0.2
│ ├── quotemeta@0.0.0
│ └── resolve@0.4.3
├── domready@0.2.13
├─┬ dot-obj@0.0.1
│ └── trim@0.0.1
├─┬ get-pixels@1.0.1
│ ├─┬ ndarray-pack@1.0.0
│ │ └─┬ cwise@0.3.4
│ │ ├─┬ cwise-compiler@0.0.0
│ │ │ └── uniq@0.0.2
│ │ └─┬ cwise-parser@0.0.1
│ │ ├── esprima@1.0.4
│ │ └── uniq@0.0.2
│ ├── pngparse@1.1.4
│ └─┬ ppm@0.0.0
│ └── through@2.2.7
├─┬ gl-buffer@0.1.1
│ ├─┬ ndarray-ops@1.1.1
│ │ └─┬ cwise-compiler@0.0.0
│ │ └── uniq@0.0.2
│ └─┬ typedarray-pool@0.1.1
│ ├── bit-twiddle@0.0.2
│ └── dup@0.0.0
├── gl-matrix@2.0.0
├─┬ gl-now@0.0.4
│ ├─┬ game-shell@0.1.4
│ │ ├── invert-hash@0.0.0
│ │ ├── iota-array@0.0.1
│ │ ├── lower-bound@0.0.3
│ │ ├── uniq@0.0.2
│ │ └── vkey@0.0.2
│ └── webglew@0.0.0
├─┬ gl-shader@0.0.6
│ ├─┬ glsl-exports@0.0.0
│ │ ├─┬ glsl-parser@0.0.5
│ │ │ └── through@1.1.2
│ │ └── glsl-tokenizer@0.0.8
│ └── uniq@0.0.2
├─┬ gl-texture2d@0.1.5
│ ├── bit-twiddle@0.0.2
│ ├─┬ cwise-compiler@0.1.0
│ │ └── uniq@0.0.2
│ ├─┬ ndarray-ops@1.1.1
│ │ └─┬ cwise-compiler@0.0.0
│ │ └── uniq@0.0.2
│ ├─┬ typedarray-pool@0.1.1
│ │ └── dup@0.0.0
│ └── webglew@0.0.0
├─┬ gl-vao@0.0.3
│ └── webglew@0.0.0
├── glsl-defines@0.0.1
├── glsl-fog@0.0.1
├── glsl-noise@0.0.0
├── glsl-point-light@0.1.0
├─┬ glslify-import@0.0.0
│ ├─┬ concat-stream@1.0.1
│ │ └─┬ bops@0.0.6
│ │ ├── base64-js@0.0.2
│ │ └── to-utf8@0.0.1
│ ├─┬ glsl-deparser@0.0.2
│ │ ├─┬ cssauron-glsl@1.0.0
│ │ │ └── cssauron@1.0.0
│ │ └── through@1.1.2
│ ├── graceful-fs@2.0.1
│ ├── map-stream@0.0.3
│ ├── split@0.2.10
│ └─┬ stream-combiner@0.0.2
│ └── duplexer@0.0.4
├─┬ glslify-stream@0.0.1
│ ├── cssauron@0.0.3
│ ├── cssauron-glsl@0.0.1
│ ├── glsl-parser@0.0.5
│ ├── glsl-tokenizer@0.0.8
│ ├── shortest@0.0.0
│ └── through@1.1.2
├─┬ glslifyify@0.1.1
│ ├─┬ glsl-deparser@0.0.2
│ │ ├─┬ cssauron-glsl@1.0.0
│ │ │ └── cssauron@1.0.0
│ │ └── through@1.1.2
│ ├─┬ glslify@0.0.1
│ │ ├── cssauron@0.0.2
│ │ ├── cssauron-glsl@0.0.0
│ │ ├── glsl-min-stream@0.0.2
│ │ ├─┬ nopt@2.0.0
│ │ │ └── abbrev@1.0.4
│ │ ├── shortest@0.0.0
│ │ └── through@1.1.2
│ ├─┬ stream-combiner@0.0.2
│ │ └── duplexer@0.0.4
│ └── wrap-stream@0.0.0
├─┬ hacker-deps@0.0.1
│ ├── findit@1.1.0
│ ├─┬ optimist@0.6.0
│ │ ├── minimist@0.0.5
│ │ └── wordwrap@0.0.2
│ └── text-table@0.1.1
├── heightmap-mesher@0.0.0
├─┬ hyperscript@1.2.3
│ ├── browser-split@0.0.0
│ ├─┬ class-list@0.1.1
│ │ └── indexof@0.0.1
│ ├─┬ data-set@0.2.2
│ │ ├─┬ individual@0.1.1
│ │ │ └── global@0.1.5
│ │ └── weakmap@0.0.6
│ └── html-element@1.2.8
├── image-loaded@0.0.2
├── indexhtmlify@1.0.3
├── inherits@2.0.1
├─┬ level-js@1.0.8
│ ├── abstract-leveldown@0.7.2
│ ├── idb-wrapper@1.2.0
│ └── isbuffer@0.0.0
├─┬ levelup@0.17.0
│ ├─┬ bops@0.0.7
│ │ ├── base64-js@0.0.2
│ │ └── to-utf8@0.0.1
│ ├── concat-stream@0.1.1
│ ├─┬ deferred-leveldown@0.0.1
│ │ └── abstract-leveldown@0.10.2
│ ├── errno@0.1.0
│ ├── prr@0.0.0
│ ├── readable-stream@1.0.17
│ ├── semver@1.1.4
│ └─┬ xtend@2.1.1
│ └── object-keys@0.4.0
├── loading-bar@0.0.1
├── lut@0.2.0
├── map-async@0.1.1
├── mesh-normals@0.0.0
├── mousetrap@0.0.1
├─┬ ndarray@1.0.8
│ └── iota-array@0.0.1
├─┬ ndarray-continuous@0.4.2
│ ├── cell-range@0.0.0
│ ├─┬ morton-page@0.1.0
│ │ ├─┬ bit-interleave@0.0.0
│ │ │ └── bit-twiddle@0.0.2
│ │ └── is-property@0.0.0
│ └─┬ ndarray-group@0.0.1
│ ├── mod-loop@0.0.0
│ └─┬ ndarray-proxy@0.0.1
│ └── bit-twiddle@0.0.2
├─┬ ndarray-downsample2x@0.1.1
│ ├─┬ cwise@0.3.4
│ │ ├─┬ cwise-compiler@0.0.0
│ │ │ └── uniq@0.0.2
│ │ └─┬ cwise-parser@0.0.1
│ │ ├── esprima@1.0.4
│ │ └── uniq@0.0.2
│ ├─┬ ndarray-fft@0.1.0
│ │ ├── bit-twiddle@0.0.2
│ │ └─┬ typedarray-pool@0.1.1
│ │ └── dup@0.0.0
│ ├─┬ ndarray-ops@1.1.1
│ │ └─┬ cwise-compiler@0.0.0
│ │ └── uniq@0.0.2
│ └─┬ ndarray-scratch@0.0.1
│ └─┬ typedarray-pool@0.1.1
│ ├── bit-twiddle@0.0.2
│ └── dup@0.0.0
├─┬ ndarray-fill@0.1.0
│ └─┬ cwise@0.3.4
│ ├─┬ cwise-compiler@0.0.0
│ │ └── uniq@0.0.2
│ └─┬ cwise-parser@0.0.1
│ ├── esprima@1.0.4
│ └── uniq@0.0.2
├─┬ ndarray-group@0.0.0
│ ├── mod-loop@0.0.0
│ └─┬ ndarray-proxy@0.0.0
│ └── bit-twiddle@0.0.2
├── ndarray-json@0.1.1
├── once@1.2.0
├── orbit-camera@0.0.1
├── perlin@1.0.0
├─┬ pp-now@0.1.0
│ ├── debounce@0.0.3
│ └─┬ gl-fbo@0.1.1
│ └── webglew@0.0.0
├─┬ preload@0.1.0
│ ├── insert-css@0.0.0
│ └─┬ xhr@1.2.3
│ ├─┬ global@2.0.7
│ │ ├─┬ min-document@0.2.8
│ │ │ └─┬ tape@1.0.4
│ │ │ ├── deep-equal@0.0.0
│ │ │ ├── defined@0.0.0
│ │ │ └── jsonify@0.0.0
│ │ └── process@0.5.1
│ └── once@1.1.1
├─┬ require-key@0.0.0
│ ├─┬ astw@0.0.0
│ │ └── esprima@1.0.2
│ ├─┬ browser-resolve@1.1.4
│ │ └── resolve@0.5.1
│ ├─┬ escodegen@0.0.27
│ │ ├── estraverse@1.3.2
│ │ └─┬ source-map@0.1.31
│ │ └── amdefine@0.1.0
│ └── esprima@1.0.4
├── rgb-pack@0.0.0
├── right-now@0.0.0
├─┬ save-pixels@0.3.0
│ └── pngjs@0.4.0
├─┬ serve@1.3.0
│ ├── commander@0.6.1
│ ├─┬ connect@2.3.9
│ │ ├── bytes@0.1.0
│ │ ├── cookie@0.0.4
│ │ ├── crc@0.2.0
│ │ ├── debug@0.7.4
│ │ ├── formidable@1.0.11
│ │ ├── fresh@0.1.0
│ │ ├── qs@0.4.2
│ │ └─┬ send@0.0.3
│ │ ├── mime@1.2.6
│ │ └── range-parser@0.0.4
│ ├─┬ jade@0.35.0
│ │ ├── character-parser@1.2.0
│ │ ├── commander@2.0.0
│ │ ├── constantinople@1.0.2
│ │ ├── mkdirp@0.3.5
│ │ ├─┬ monocle@1.1.50
│ │ │ └─┬ readdirp@0.2.5
│ │ │ └─┬ minimatch@0.2.12
│ │ │ ├── lru-cache@2.3.1
│ │ │ └── sigmund@1.0.0
│ │ ├─┬ transformers@2.1.0
│ │ │ ├─┬ css@1.0.8
│ │ │ │ ├── css-parse@1.0.4
│ │ │ │ └── css-stringify@1.0.5
│ │ │ ├─┬ promise@2.0.0
│ │ │ │ └── is-promise@1.0.0
│ │ │ └─┬ uglify-js@2.2.5
│ │ │ ├─┬ optimist@0.3.7
│ │ │ │ └── wordwrap@0.0.2
│ │ │ └─┬ source-map@0.1.31
│ │ │ └── amdefine@0.1.0
│ │ └─┬ with@1.1.1
│ │ └─┬ uglify-js@2.4.0
│ │ ├─┬ optimist@0.3.7
│ │ │ └── wordwrap@0.0.2
│ │ ├─┬ source-map@0.1.31
│ │ │ └── amdefine@0.1.0
│ │ └── uglify-to-browserify@1.0.1
│ ├─┬ less-middleware@0.1.13
│ │ ├─┬ less@1.5.0
│ │ │ ├─┬ clean-css@1.0.12
│ │ │ │ └─┬ commander@1.3.2
│ │ │ │ └── keypress@0.1.0
│ │ │ ├── mime@1.2.11
│ │ │ ├─┬ request@2.27.0
│ │ │ │ ├── aws-sign@0.3.0
│ │ │ │ ├── cookie-jar@0.3.0
│ │ │ │ ├── forever-agent@0.5.0
│ │ │ │ ├─┬ form-data@0.1.2
│ │ │ │ │ └─┬ 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
│ │ │ │ ├── node-uuid@1.4.1
│ │ │ │ ├── oauth-sign@0.3.0
│ │ │ │ ├── qs@0.6.5
│ │ │ │ └── tunnel-agent@0.3.0
│ │ │ └─┬ source-map@0.1.31
│ │ │ └── amdefine@0.1.0
│ │ ├── mkdirp@0.3.5
│ │ └─┬ node.extend@1.0.8
│ │ ├── is@0.2.6
│ │ └── object-keys@0.4.0
│ └─┬ stylus@0.40.2
│ ├── cssom@0.2.5
│ ├── debug@0.7.4
│ ├── mkdirp@0.3.5
│ └── sax@0.5.5
├─┬ soundcloud-badge@0.0.0
│ ├── google-fonts@0.0.0
│ ├── insert-css@0.0.0
│ ├─┬ minstache@1.1.0
│ │ └─┬ commander@1.0.4
│ │ └── keypress@0.1.0
│ └─┬ soundcloud-resolve@0.0.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
│ │ │ └─┬ 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
│ └─┬ xhr@1.2.3
│ ├─┬ global@2.0.7
│ │ ├─┬ min-document@0.2.8
│ │ │ └─┬ tape@1.0.4
│ │ │ ├── deep-equal@0.0.0
│ │ │ ├── defined@0.0.0
│ │ │ └── jsonify@0.0.0
│ │ └── process@0.5.1
│ └── once@1.1.1
├─┬ tab64@0.0.1
│ └── dtype@0.1.0
├── talkie@0.0.0
├── through@2.3.4
├─┬ uglify-js@2.4.3
│ ├─┬ optimist@0.3.7
│ │ └── wordwrap@0.0.2
│ ├─┬ source-map@0.1.31
│ │ └── amdefine@0.1.0
│ └── uglify-to-browserify@1.0.1
├─┬ uglifyify@0.0.3
│ └── uglify-js@1.3.5
├── unindex-mesh@0.0.0
├── vectors@0.1.0
├── web-audio-analyser@0.0.0
├── webworkify@0.1.0
├── worker-query@0.0.0
└── zeros@0.0.0
aha npmd resolve grunt
...
this is the problem: https://github.com/gruntjs/grunt/blob/2916e88862a97d4cefba71585a72de8cc4951982/package.json#L60
npm resolves that, but that breaks npmd without giving a good error message.
this is a bug in padded-semver, but there is also a UX bug in npmd-resolve that it doesn't stop with a good error message.
This is what you get when you do npmd resolve underscore.string@~2.2.0rc
incidentally, this is actually fixed in grunt master, but they havn't published it yet (grumble grumble)
[dominic@COMPUTER npmd]$ ./index.js resolve underscore.string@~2.2.0rc
/home/dominic/c/npmd/index.js:126
if(err) throw err
^
Error: underscore.string@2.2.1><~2.2.0rc
at /home/dominic/c/npmd/node_modules/npmd-resolve/index.js:75:17
at /home/dominic/c/npmd/node_modules/npmd-resolve/node_modules/level-peek/index.js:72:10
at /home/dominic/c/npmd/node_modules/npmd-resolve/node_modules/level-peek/index.js:36:12
at ReadStream.onEvent (/home/dominic/c/npmd/node_modules/npmd-resolve/node_modules/level-peek/index.js:12:10)
at ReadStream.EventEmitter.emit (events.js:117:20)
at ReadStream._onData (/home/dominic/c/npmd/node_modules/level/node_modules/levelup/lib/read-stream.js:139:8)
at /home/dominic/c/npmd/node_modules/level/node_modules/levelup/lib/read-stream.js:124:12
Okay, this is now half-fixed: npmd resolve grunt
prints the correct error message.
this involved fixing error handling in several pull-* streams. so this was a very good find!
(and npmd is partially intended for testing my crazy ideas in practice - pull-streams and leveldb,
so that is going great)
the other part of this fix is just making padded semver do something sensible with a range like ~2.2.0rc
oh, yeah, reinstall npmd for version 3.2.3 of npmd-resolve
which fixes this.
Awesome mate - thanks. Will give it a go now while I'm waiting in the airport lounge waiting to leave AU :)
cool, where are you going to?
Just arrived in SF and will be around for about 8 days.
I've found that
npmd install
gets stuck for a couple of projects (seems in some way related to fetching esprima). It would be awesome if there was the option to turn on verbose logging for the install operation.