[英]Can I access locally-installed packages from a globally-installed package?
我不知道我是否正確地表達了這個問題,因此,如果我的頭銜不清楚,我深表歉意。
說我有一個安裝可執行文件的NPM軟件包。 大概我希望用戶使用-g
標志安裝此軟件包,以便他們可以在任何時候運行它。
在這種情況下,當我從可執行文件中調用require()
,它將查找全局安裝的軟件包。
但是假設此包為Node項目提供了通用功能。 我可能想知道當前項目在本地安裝了哪些軟件包。 我是否應該假設:
path.join(process.cwd(), 'node_modules')
還是在這種情況下設置NODE_PATH有更“正確”的方法? (或者我應該只設置require(absolute_path_to_file)
而不是設置NODE_PATH嗎?)
require
不僅會在$(CWD)\\node_modules
內部查找包,還會在父級,祖父母等所有node_modules
內部查找包。因此,可以在npm上使用resolve
解決此問題。
FILE:your_global_command.js
// npm install resolve
var resolve = require('resolve').sync;
// Lookup for local module at current working dir
function require_cwd(name) {
var absolute_path = resolve(name, { basedir: process.cwd() });
return require(absolute_path);
}
// Load local express
// this will throw an error when express is not found as local module
var express = require_cwd('express');
我還創建了一個程序包,以在current-working-dir(而不是模塊的__dirname
)處需要一個程序包: https : __dirname
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.