簡體   English   中英

設置 node.js REPL 模塊路徑

[英]set node.js REPL module paths

我不知道如何將路徑添加到我的 Node.js 安裝(Mac OS X 上的 v.0.4.7)。 我已經安裝了 npm,它全局安裝到/usr/local/lib/node_modules 但是,當我安裝 npm 時,它沒有通知 Node 它選擇將全局模塊放在哪里(應該有嗎?)。 現在,當我在命令行模式下使用 Node 時,我不能簡單地require()我全局安裝的模塊。 所以,我想知道是否有某種節點配置文件或環境變量可以添加我的全局 npm 模塊安裝路徑?

我知道當我在 Node 的命令行中時,我可以將它添加到require.paths數組中,但我想一勞永逸地添加這個全局模塊文件夾,這樣 Node 在我require()時總是會在該目錄中搜索模塊require()他們從命令行。 提前感謝有關使 npm 和 Node 共存的任何幫助和指示!

好,我知道了。 結合來自http://nodejs.org/docs/v0.4.7/api/modules.html#file_Moduleshttps://github.com/isaacs/npm/blob/master/doc/faq.md#readme的信息清除 Node 在檢查模塊時檢查 NODE_PATH 環境變量。 為了設置它,我做了以下事情:

echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.bashrc

這會將 NODE_PATH 設置為 npm 的全局安裝文件夾。

媽的,我誤會了。 對於那個很抱歉。

回到主題,您可以將這兩行放在set-repl-paths.js

require.paths.unshift('/usr/lib/node_modules');
require("repl").start();

然后執行node set-repl-paths.js你將有一個已經設置路徑的 repl。 你可以編寫一個簡單的 bash 腳本或設置一個 shell 別名,這樣你就可以輸入node-repl或類似的東西。

對於 npm 1.x,您應該使用本地安裝,並為提供命令行實用程序的模塊保留全局安裝。

如果您真的想要模塊 foo的全局安裝,那么在您的模塊文件夾中發出 npm link foo 現在你可以在你的模塊中使用 require("foo")了。

最佳做法是使用本地安裝。

請參閱 nodejs 博客上的 npm 1.0:全局與本地安裝

全局安裝 package(通常由命令行使用)

npm install --global PACKAGE_NAME

就我而言,我想將jslint安裝為命令行工具。 所以我跑了

npm install --global jslint

這會將 package 安裝到

/usr/local/lib/node_modules/

那么為什么這一切呢? 如果在項目中專門使用它們,則不應在全局范圍內安裝它們。

有關更多信息,請查看幫助頁面。

npm help install

npm help global

我還在npm常見問題解答中找到了它

對此回復: https://stackoverflow.com/a/5923898/7381355

您可以將其添加到 your.bashrc 以僅在運行 repl 時設置 NODE_PATH ,因為需要全局模塊是一種反模式。

node() {
  if (( $# == 0 )); then
    NODE_PATH=$(npm root -g) command node
  else
    command node "$@"
  fi
}

當沒有 arguments 傳遞給節點時,它會設置 NODE_PATH。 所以它不適用於node -i之類的東西。 您必須添加更多參數檢查以涵蓋運行 repl 的所有情況。

這將使 repl 始終設置 NODE_PATH。 如果您希望能夠選擇是否運行 repl 或帶有全局模塊的腳本,您可以將其添加到 your.bashrc 中。

node_global() {
  NODE_PATH=$(npm root -g) node "$@"
}

然后只需運行 node_global。 我選擇了第二個選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM