npm doesn't install devDependencies recursively

There is connect-assets in my package.json's dependencies. And its package.json looks like:

 "dependencies": {
    "connect-file-cache": "0.2.4",
    "mime": "1.2.2",
    "snockets": "1.3.6",
    "underscore": "1.1.7"
  },
  "devDependencies": {
    "async": "0.1.14",
    "coffee-script": "~1.3.1",
    "connect": "1.8.5",
    "nib": "0.2.0",
    "bootstrap-stylus": "0.2.0",
    "nodeunit": "0.5.4",
    "stylus": "0.22.2",
    "request": "2.1.1",
    "watchit": "0.0.4",
    "less": "1.3.0"
  }

But when I ran npm install(with or without --dev and --dev-all), it only installed connect-assets, no stylus, nib, etc.

How should I do?

It's simply because the npm should not work this way. If I want to install the devDependencies of some depended modules, I have to enter their directories.

One should be aware that npm will not deliver files that are specified in the .npmignore file. This might be the culprit if one was looking to use files in a devDependency that exist in the git repo, but mysteriously are not present in the npm delivery.