繁体   English   中英

在已发布的 npm package 中使用 process.cwd() 时出现问题

[英]Problem when using process.cwd() in published npm package

我正在通过构建一个用于自动执行 Gerrit 提交的简单程序来尝试使用 cli 工具。 一切都在本地工作,但在将 package 发布到 npm 并在全球范围内安装后,它看起来process.cwd()表现不同。 程序退出,但没有console.log() 即使是一个简单的console.log(process.cwd())也会被忽略(再次在本地工作)。 运行全局安装的 npm package 时是否可以使用process.cwd()

console.log(process.cwd());

const getCurrentBranchName = (p = process.cwd()) => {
  const gitHeadPath = `${p}/.git/HEAD`;

  return fs.existsSync(gitHeadPath)
    ? fs.readFileSync(gitHeadPath, "utf-8").trim().split("/").pop()
    : (console.log("not a git repo"), process.exit(0));
}

const currentBranch = getCurrentBranchName();

在本地运行时(使用node index ):

$ /Users/jpap/.npm-packages/lib/node_modules/gittest
$ not a git repo

你还没有证明问题出在process.cwd()

您问题中的代码和您描述的结果仅表明console.log()调用未执行。

您可以通过将以下内容添加到代码顶部来轻松测试它:

console.log('My name is Inigo Montoya. You killed my father. Prepare to die!')

您发布的内容可能与您在本地运行的内容不同

例如,您可以使用配置为剥离 console.log 调用的捆绑器(例如 Rollup)。

这很容易确认。 简单看npm安装版的代码:

  1. 使用npm root -g找出全局包的安装位置。 对于非全局包,请查看node_modules
  2. 找到你的包的子目录。
  3. 查看代码,或将其与源代码进行比较。

我怀疑您会看到所有 console.log 语句都已删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM