[英]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_Modules和https://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.