簡體   English   中英

我可以從全局安裝的軟件包訪問本地安裝的軟件包嗎?

[英]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.

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