dominictarr / npmd

MIT License
450 stars 37 forks source link

--verbose option on npmd install #24

Open DamonOehlman opened 10 years ago

DamonOehlman commented 10 years ago

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.

dominictarr commented 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.

DamonOehlman commented 10 years ago

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-css

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

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
dominictarr commented 10 years ago

aha npmd resolve grunt...

dominictarr commented 10 years ago

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
dominictarr commented 10 years ago

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

dominictarr commented 10 years ago

oh, yeah, reinstall npmd for version 3.2.3 of npmd-resolve which fixes this.

DamonOehlman commented 10 years ago

Awesome mate - thanks. Will give it a go now while I'm waiting in the airport lounge waiting to leave AU :)

dominictarr commented 10 years ago

cool, where are you going to?

DamonOehlman commented 10 years ago

Just arrived in SF and will be around for about 8 days.