npm 包中的二进制文件

2023-12-23

我尝试创建一个 npm 包,它可以作为 shell 中的命令启动。我有package.json

{
  "name": "myapp",
  "version": "0.0.6",
  "dependencies": {
    "async": "",
    "watch": "",
    "node-promise": "",
    "rmdir": "",
    "should": "",
    "websocket": ""
  },
  "bin": "myapp"
}

and myapp

#!/bin/bash

path=`dirname "$0"`
file="/myapp.js"

node $path$file $1 &

但我收到一个错误:

module.js:340
    throw err;
          ^
Error: Cannot find module '/usr/local/bin/myapp.js'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

问题是 myapp.js 在另一个目录中。如何从我的脚本中获取此目录名称?或者也许有更好的方法来做到这一点?


事实上,你可以把你的myapp.js文件到bin.
因此,package.json 文件中的 bin 键应该是这样的:

"bin": { "myapp" : "<relative_path_to_myapp.js>/lib/myapp.js" }

在第一行myapp.js,您必须添加此 shebang 行:

#!/usr/bin/env node

它告诉系统使用node to run myapp.js.


...或者如果您不想打电话myapp.js直接,您可以创建一个像这样的脚本作为您的可执行文件:

#!/usr/bin/env node

var myapp = require('<relative_path_to_myapp.js>/myapp.js');
myapp.doSth();

并在 package.json 中:

"bin" : { "myapp" : "<relative_path_to_the_script>/script.js" }

无论哪种方式,您都可以避免找到节点模块的路径。


但是...如果你坚持使用旧的myappbash 脚本,然后您可以使用以下命令找到模块的路径:

myapp_path=$( npm explore -g myapp -- "pwd" )

希望这些有帮助:D

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

npm 包中的二进制文件 的相关文章

随机推荐

  • json_decode() 无法正常工作

    这里我使用简单的html jquery ajax文件 ajax代码在这里 var email email protected cdn cgi l email protection var username ankur 07 var pass
  • Celery Beat:如何定义定义为类的周期性任务(基于类的任务)

    到目前为止 我只处理过定义为函数的 Celery 任务 我曾经定义它们的周期性CELERYBEAT SCHEDULE范围 像这样 from datetime import timedelta CELERYBEAT SCHEDULE add
  • 在 Swift 中实现协议的 NSManagedObject 的 EXC_BAD_ACCESS 错误

    我有以下两种方法 func isAuthenticated gt Bool var currentUser CurrentUser self getCurrentUser if currentUser nil return false se
  • 为什么serverstatus对mongodb写操作有不好的影响?

    我有 1 个 mongos 3 个 mongod 和 3 个配置服务器 当我写一些文档时 有时其中一个 mongods 的插入速度很慢 并且 mongod 日志文件中出现 serverstatus was very Slow 为什么 版本是
  • 如何使用 sqlite3.exe 从导出的 .sql 脚本创建数据库

    尝试将 SqlCe 数据库转换为 SQLite 我将其导出到 sql文件 现在我将如何使用sqlite exe以此创建数据库 sql file 放在哪里sql3 exe file 在 cmd 提示符或在sqlite exe shell 使用
  • Java 数组具有多种数据类型

    我可以使用什么来存储多种不同类型的数据 Int String 等 我有 PHP 背景 我可以将不同类型的数据存储到数组中 但我不知道如何在 Java 中做到这一点 举个例子 array array val1 gt 1 val2 gt cat
  • 是否可以从 PHP 检查 PHP 文件语法?

    我使用自动加载功能动态加载 PHP 类文件 这些文件可能由于某种原因丢失或损坏 自动加载将成功报告丢失的文件 以便应用程序逻辑可以处理该问题 但是 如果这些文件损坏 则整个处理会停止 用户会看到空白屏幕 并且错误日志中会显示 PHP 解析错
  • 尝试获取进程启动时间时“访问被拒绝”

    现在我正在尝试获取计算机上运行的所有进程的启动时间 到目前为止我的代码是这样的 foreach Process item in Process GetProcesses txtActivity AppendText item StartTi
  • 两个自动机之间的等价

    确定两个自动机之间的等价性的最佳或最简单的方法是什么 即 如果给定两个有限自动机 A 和 B 我如何确定两者是否识别相同的语言 它们都是确定性的或都是非确定性的 一种不同的 更简单的方法是对自动机进行补充和交叉 自动机A相当于B iff L
  • 允许同一 COM 库的多个版本

    我编写了一个 C 程序和库 允许用户更轻松地使用特定专有模拟器的 COM 接口 目前 我必须为我希望支持的每个版本的模拟器构建和分发不同版本的 C 库 开发模拟器的公司定期发布新版本 每个新版本都会有一个递增的主版本号 据我所知 版本之间的
  • PHP rtrim 函数修剪多余字符?为什么?

    如何rtrim工作 我有一个字符串 4dbb3dca 我不确定我的字符串是如何格式化的 我想打电话rtrim 4dbb3dca amp edit 可能 amp 特殊字符问题 但是在我的字符串之后4dbb3dc 我希望它是4dbb3dca 有
  • C++开发值得学Eclipse吗

    据我所知 从头开始学习使用 Eclipse 是很困难的 但我会得到诸如快速源代码浏览 调用图 静态代码分析等好处 使用 Eclipse for C CDT 还能带来哪些其他好处 我学习了 C Eclipse 它非常灵活并提供许多功能 我不再
  • 使用两个 1d 数组高效索引 2d numpy 数组

    我有一个大型 2d numpy 数组和两个 1d 数组 表示 2d 数组中的 x y 索引 我想使用这些一维数组对二维数组执行操作 我可以使用 for 循环来完成此操作 但在处理大型数组时速度非常慢 有更快的方法吗 我尝试简单地使用一维数组
  • Scala:隐式传递一个隐式参数,显式传递另一个参数。是否可以?

    让我们考虑一下这个函数 def foo implicit a Int b String println a b 现在 让我们假设有一个隐含的String and Int implicit val i1 1 在范围内 但我们想传递另一个 no
  • 构建器模式与配置对象

    构建器模式在创建不可变对象时很流行 但创建构建器会产生一些编程开销 所以我想知道为什么不简单地使用配置对象 构建器的用法如下所示 Product p Product Builder name Vodka alcohol 0 38 size
  • 如何在Python中创建一组参数化函数? [复制]

    这个问题在这里已经有答案了 我正在尝试创建一系列函数 并通过 shift 参数进行参数化 考虑下面的代码 我希望 for 循环创建一组函数 每个函数都会改变 不同数量的争论 Python 3 code N 5 fns for idx in
  • 如何检查数组中是否可以求和?

    给定一个数组N整数 检查是否可以获得总和S 通过选择数组的一些 或不选择 元素并添加它们 我尝试使用贪婪方法解决这个问题 首先对数组进行排序 然后越来越接近总和 然而它不起作用 谁能告诉我应该如何解决这个问题 t int input for
  • iPhone:NSURLRequest CachePolicy 设置之间的性能差异

    使用时NSURL请求 http developer apple com iphone library documentation Cocoa Reference Foundation Classes NSURLRequest Class R
  • 什么是红/绿测试?

    我相信我已经知道答案 但我不是 100 确定 所以只是一个简单的问题 红 绿测试实际上意味着什么 我将其理解为 首先编写测试 以便它们全部失败 全部红色 然后编写代码并观察每个测试如何变成绿色 当所有测试都变成绿色时 就没事了 我在Scot
  • npm 包中的二进制文件

    我尝试创建一个 npm 包 它可以作为 shell 中的命令启动 我有package json name myapp version 0 0 6 dependencies async watch node promise rmdir sho