最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

NPM CLI应用程序相对路径不起作用

运维笔记admin12浏览0评论

NPM CLI应用程序相对路径不起作用

NPM CLI应用程序相对路径不起作用

我正在NodeJS中创建一个CLI应用程序,该程序包将在NPM上发布。该应用程序非常简单,因为它只有两个文件。这是应用程序的结构:

的package.json

{
  "name": "mycliapp",
  "version": "1.0.0",
  "description": "Some description",
  "main": "./bin/cli.js",
  "preferGlobal": true,
  "bin": {
    "mycliapp": "bin/cli.js"
  },
}

斌/ cli.js

const nodePlop    = require('node-plop');
const configPath  = './bin/config.js';
const plop = nodePlop(configPath, {
 force: argv.force || argv.f
});

斌/ config.js

{
  // some configuration
}

现在如果我从这个目录创建带有npm install -g的符号链接并从同一个开发目录运行命令mycliapp,它工作得很好但是如果我从我的计算机中的任何其他目录运行这个mycliapp命令,则尝试从当前的const configPath = './bin/config.js'中获取工作目录不是来自实际的npm包,因此找不到配置文件。

我该如何解决这个问题?我尝试使用__dirname__filenamepath.join但似乎没有任何工作。

我也在npm上发布了这个软件包并从那里安装,同样的问题也在发生。

回答如下:

你的package.json中的JSON格式不正确 - 你应该在设置bin参数后删除尾随的逗号。

此外,如果您的配置文件与脚本位于同一目录中,则应在脚本中将其作为./config.js引用。

最后,您需要在#!/usr/bin/env node文件的顶部包含一个shebang(cli.js)或您打算用作进入应用程序的任何文件,以便您的系统知道用于执行文件的解释器。

有关更多信息,请参阅npm博客上的this post。

发布评论

评论列表(0)

  1. 暂无评论