gpt4 book ai didi

node.js - 我可以从全局安装的软件包访问本地安装的软件包吗?

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:32 24 4
gpt4 key购买 nike

我不知道我是否正确地表达了这个问题,所以如果标题中没有明确我的意思,我深表歉意。

假设我有一个安装可执行文件的 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来解决这个问题

文件: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');
<小时/>

我还创建了一个包来需要当前工作目录中的包(而不是模块的 __dirname): https://npmjs.org/package/require-cwd

关于node.js - 我可以从全局安装的软件包访问本地安装的软件包吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20907252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com