引:在安裝完nodejs后,通過npm下載全局模塊默認安裝到{%USERDATA%}C:\Users\username\AppData\下的Roaming\npm下,這當然是不太對的默認。
1,安裝LTS版本的nodejs,本文為v6.10.2 (includes npm 3.10.10) .msi,nodejs安裝路徑會自動添加到PATH環境變量;
本文安裝路徑為:D:\Program Files\nodejs
修改完成之后:
2,在nodejs安裝路徑下新建文件夾node_cache用來存放下載包的緩存; 即:D:\Program Files\nodejs\node_cache;
3,運行 npm config set cache "D:\Program Files\nodejs\node_cache" 設置緩存文件夾;
運行npm config set prefix "D:\Program Files\nodejs"設置全局模塊存放路徑;
注意:nodejs會自動尋找該路徑下的node_modules文件夾為實際存放全局模塊的路徑,這也是為啥叫prefix不叫global的原因;
以后安裝的全局模塊都會被放到D:\Program Files\nodejs\node_modules下,跟npm模塊在一個文件夾中;
4,修改D:\Program Files\nodejs\node_modules\npm\npmrc文件,將默認值改為:
prefix=D:\Program Files\nodejs,如果不做這個修改,則npm在運行 npm ls -g 的時候,仍然以默認的路徑來查找已安裝的全局模塊;
5,運行npm install express -g 以全局方式安裝express模塊,可發現,在D:\Program Files\nodejs\node_modules下出現express文件夾;
6,運行npm list -g ,列出所有全局模塊:
D:\Program Files\nodejs
+-- express@4.15.2
| +-- accepts@1.3.3
| | +-- mime-types@2.1.15
| | | `-- mime-db@1.27.0
| | `-- negotiator@0.6.1
| +-- array-flatten@1.1.1
| +-- content-disposition@0.5.2
| +-- content-type@1.0.2
| +-- cookie@0.3.1
| +-- cookie-signature@1.0.6
| +-- debug@2.6.1
| | `-- ms@0.7.2
| +-- depd@1.1.0
| +-- encodeurl@1.0.1
| +-- escape-html@1.0.3
| +-- etag@1.8.0
| +-- finalhandler@1.0.2
| | +-- debug@2.6.4
| | | `-- ms@0.7.3
| | `-- unpipe@1.0.0
| +-- fresh@0.5.0
| +-- merge-descriptors@1.0.1
| +-- methods@1.1.2
| +-- on-finished@2.3.0
| | `-- ee-first@1.1.1
| +-- parseurl@1.3.1
| +-- path-to-regexp@0.1.7
| +-- proxy-addr@1.1.4
| | +-- forwarded@0.1.0
| | `-- ipaddr.js@1.3.0
| +-- qs@6.4.0
| +-- range-parser@1.2.0
| +-- send@0.15.1
| | +-- destroy@1.0.4
| | +-- http-errors@1.6.1
| | | `-- inherits@2.0.3
| | `-- mime@1.3.4
| +-- serve-static@1.12.1
| +-- setprototypeof@1.0.3
| +-- statuses@1.3.1
| +-- type-is@1.6.15
| | `-- media-typer@0.3.0
| +-- utils-merge@1.0.0
| `-- vary@1.1.1
`-- npm@3.10.10
+-- abbrev@1.0.9
+-- ansi-regex@2.0.0
+-- ansicolors@0.3.2
+-- ansistyles@0.1.3
+-- aproba@1.0.4
+-- archy@1.0.0
+-- asap@2.0.5
+-- chownr@1.0.1
+-- cmd-shim@2.0.2
+-- columnify@1.5.4
| `-- wcwidth@1.0.0
| `-- defaults@1.0.3
| `-- clone@1.0.2
+-- config-chain@1.1.11
| `-- proto-list@1.2.4
+-- debuglog@1.0.1
+-- dezalgo@1.0.3
+-- editor@1.0.0
+-- fs-vacuum@1.2.9
+-- fs-write-stream-atomic@1.0.8
+-- fstream@1.0.10
+-- fstream-npm@1.2.0
| `-- fstream-ignore@1.0.5
| `-- minimatch@3.0.3
| `-- brace-expansion@1.1.6
| +-- balanced-match@0.4.2
| `-- concat-map@0.0.1
+-- glob@7.1.0
| +-- fs.realpath@1.0.0
| +-- minimatch@3.0.3
| | `-- brace-expansion@1.1.6
| | +-- balanced-match@0.4.2
| | `-- concat-map@0.0.1
| `-- path-is-absolute@1.0.1
+-- graceful-fs@4.1.9
+-- has-unicode@2.0.1
+-- hosted-git-info@2.1.5
+-- iferr@0.1.5
+-- imurmurhash@0.1.4
+-- inflight@1.0.5
+-- inherits@2.0.3
+-- ini@1.3.4
+-- init-package-json@1.9.4
| +-- glob@6.0.4
| | +-- minimatch@3.0.3
| | | `-- brace-expansion@1.1.6
| | | +-- balanced-match@0.4.2
| | | `-- concat-map@0.0.1
| | `-- path-is-absolute@1.0.0
| `-- promzard@0.3.0
+-- lockfile@1.0.2
+-- lodash._baseindexof@3.1.0
+-- lodash._baseuniq@4.6.0
| +-- lodash._createset@4.0.3
| `-- lodash._root@3.0.1
+-- lodash._bindcallback@3.0.1
+-- lodash._cacheindexof@3.0.2
+-- lodash._createcache@3.1.2
+-- lodash._getnative@3.9.1
+-- lodash.clonedeep@4.5.0
+-- lodash.restparam@3.6.1
+-- lodash.union@4.6.0
+-- lodash.uniq@4.5.0
+-- lodash.without@4.4.0
+-- mkdirp@0.5.1
| `-- minimist@0.0.8
+-- node-gyp@3.4.0
| +-- minimatch@3.0.3
| | `-- brace-expansion@1.1.6
| | +-- balanced-match@0.4.2
| | `-- concat-map@0.0.1
| +-- npmlog@3.1.2
| | +-- are-we-there-yet@1.1.2
| | | `-- delegates@1.0.0
| | +-- console-control-strings@1.1.0
| | +-- gauge@2.6.0
| | | +-- has-color@0.1.7
| | | +-- object-assign@4.1.0
| | | +-- signal-exit@3.0.0
| | | +-- string-width@1.0.2
| | | | +-- code-point-at@1.0.0
| | | | | `-- number-is-nan@1.0.0
| | | | `-- is-fullwidth-code-point@1.0.0
| | | | `-- number-is-nan@1.0.0
| | | `-- wide-align@1.1.0
| | `-- set-blocking@2.0.0
| `-- path-array@1.0.1
| `-- array-index@1.0.0
| +-- debug@2.2.0
| | `-- ms@0.7.1
| `-- es6-symbol@3.1.0
| +-- d@0.1.1
| `-- es5-ext@0.10.12
| `-- es6-iterator@2.0.0
+-- nopt@3.0.6
+-- normalize-git-url@3.0.2
+-- normalize-package-data@2.3.5
| `-- is-builtin-module@1.0.0
| `-- builtin-modules@1.1.1
+-- npm-cache-filename@1.0.2
+-- npm-install-checks@3.0.0
+-- npm-package-arg@4.2.0
+-- npm-registry-client@7.2.1
| +-- concat-stream@1.5.2
| | +-- readable-stream@2.0.6
| | | +-- core-util-is@1.0.2
| | | +-- isarray@1.0.0
| | | +-- process-nextick-args@1.0.7
| | | +-- string_decoder@0.10.31
| | | `-- util-deprecate@1.0.2
| | `-- typedarray@0.0.6
| +-- npmlog@3.1.2
| | +-- are-we-there-yet@1.1.2
| | | `-- delegates@1.0.0
| | +-- console-control-strings@1.1.0
| | +-- gauge@2.6.0
| | | +-- has-color@0.1.7
| | | +-- object-assign@4.1.0
| | | +-- signal-exit@3.0.0
| | | +-- string-width@1.0.2
| | | | +-- code-point-at@1.0.0
| | | | | `-- number-is-nan@1.0.0
| | | | `-- is-fullwidth-code-point@1.0.0
| | | | `-- number-is-nan@1.0.0
| | | `-- wide-align@1.1.0
| | `-- set-blocking@2.0.0
| `-- retry@0.10.0
+-- npm-user-validate@0.1.5
+-- npmlog@4.0.0
| +-- are-we-there-yet@1.1.2
| | `-- delegates@1.0.0
| +-- console-control-strings@1.1.0
| +-- gauge@2.6.0
| | +-- has-color@0.1.7
| | +-- object-assign@4.1.0
| | +-- signal-exit@3.0.0
| | +-- string-width@1.0.2
| | | +-- code-point-at@1.0.0
| | | | `-- number-is-nan@1.0.0
| | | `-- is-fullwidth-code-point@1.0.0
| | | `-- number-is-nan@1.0.0
| | `-- wide-align@1.1.0
| `-- set-blocking@2.0.0
+-- once@1.4.0
+-- opener@1.4.2
+-- osenv@0.1.3
| +-- os-homedir@1.0.1
| `-- os-tmpdir@1.0.1
+-- path-is-inside@1.0.2
+-- read@1.0.7
| `-- mute-stream@0.0.5
+-- read-cmd-shim@1.0.1
+-- read-installed@4.0.3
| `-- util-extend@1.0.3
+-- read-package-json@2.0.4
| +-- glob@6.0.4
| | +-- minimatch@3.0.3
| | | `-- brace-expansion@1.1.6
| | | +-- balanced-match@0.4.2
| | | `-- concat-map@0.0.1
| | `-- path-is-absolute@1.0.0
| `-- json-parse-helpfulerror@1.0.3
| `-- jju@1.3.0
+-- read-package-tree@5.1.5
+-- readable-stream@2.1.5
| +-- buffer-shims@1.0.0
| +-- core-util-is@1.0.2
| +-- isarray@1.0.0
| +-- process-nextick-args@1.0.7
| +-- string_decoder@0.10.31
| `-- util-deprecate@1.0.2
+-- readdir-scoped-modules@1.0.2
+-- realize-package-specifier@3.0.3
+-- request@2.75.0
| +-- aws-sign2@0.6.0
| +-- aws4@1.4.1
| +-- bl@1.1.2
| | `-- readable-stream@2.0.6
| | +-- core-util-is@1.0.2
| | +-- isarray@1.0.0
| | +-- process-nextick-args@1.0.7
| | +-- string_decoder@0.10.31
| | `-- util-deprecate@1.0.2
| +-- caseless@0.11.0
| +-- combined-stream@1.0.5
| | `-- delayed-stream@1.0.0
| +-- extend@3.0.0
| +-- forever-agent@0.6.1
| +-- form-data@2.0.0
| | `-- asynckit@0.4.0
| +-- har-validator@2.0.6
| | +-- chalk@1.1.3
| | | +-- ansi-styles@2.2.1
| | | +-- escape-string-regexp@1.0.5
| | | +-- has-ansi@2.0.0
| | | `-- supports-color@2.0.0
| | +-- commander@2.9.0
| | | `-- graceful-readlink@1.0.1
| | +-- is-my-json-valid@2.15.0
| | | +-- generate-function@2.0.0
| | | +-- generate-object-property@1.2.0
| | | | `-- is-property@1.0.2
| | | +-- jsonpointer@4.0.0
| | | `-- xtend@4.0.1
| | `-- pinkie-promise@2.0.1
| | `-- pinkie@2.0.4
| +-- hawk@3.1.3
| | +-- boom@2.10.1
| | +-- cryptiles@2.0.5
| | +-- hoek@2.16.3
| | `-- sntp@1.0.9
| +-- http-signature@1.1.1
| | +-- assert-plus@0.2.0
| | +-- jsprim@1.3.1
| | | +-- extsprintf@1.0.2
| | | +-- json-schema@0.2.3
| | | `-- verror@1.3.6
| | `-- sshpk@1.10.1
| | +-- asn1@0.2.3
| | +-- assert-plus@1.0.0
| | +-- bcrypt-pbkdf@1.0.0
| | +-- dashdash@1.14.0
| | +-- ecc-jsbn@0.1.1
| | +-- getpass@0.1.6
| | +-- jodid25519@1.0.2
| | +-- jsbn@0.1.0
| | `-- tweetnacl@0.14.3
| +-- is-typedarray@1.0.0
| +-- isstream@0.1.2
| +-- json-stringify-safe@5.0.1
| +-- mime-types@2.1.12
| | `-- mime-db@1.24.0
| +-- node-uuid@1.4.7
| +-- oauth-sign@0.8.2
| +-- qs@6.2.1
| +-- stringstream@0.0.5
| +-- tough-cookie@2.3.1
| `-- tunnel-agent@0.4.3
+-- retry@0.10.0
+-- rimraf@2.5.4
+-- semver@5.3.0
+-- sha@2.0.1
+-- slide@1.1.6
+-- sorted-object@2.0.1
+-- strip-ansi@3.0.1
+-- tar@2.2.1
| `-- block-stream@0.0.8
+-- text-table@0.2.0
+-- uid-number@0.0.6
+-- umask@1.1.0
+-- unique-filename@1.1.0
| `-- unique-slug@2.0.0
+-- unpipe@1.0.0
+-- validate-npm-package-license@3.0.1
| +-- spdx-correct@1.0.2
| | `-- spdx-license-ids@1.2.0
| `-- spdx-expression-parse@1.0.2
| +-- spdx-exceptions@1.0.4
| `-- spdx-license-ids@1.2.0
+-- validate-npm-package-name@2.2.2
| `-- builtins@0.0.7
+-- which@1.2.11
| `-- isexe@1.1.2
+-- wrappy@1.0.2
`-- write-file-atomic@1.2.0
包含了express和npm兩個模塊,及其依賴模塊;
7,最后有潔癖的同學可以將用戶環境變量中的默認路徑刪除;
本文包含的方法,並不需要另外設置PATH變量;
-End-