Pkg

将 Node.js 项目打包为可执行文件
授权协议 MIT
开发语言 JavaScript
所属分类 Web应用开发、 Node.js 扩展
软件类型 开源软件
地区 不详
投 递 者 艾望
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

此命令行界面使您可以将Node.js项目打包为可执行文件,甚至可以在未安装Node.js的设备上运行。

用例

  • 在没有来源的情况下制作商业版的应用程序
  • 在没有来源的情况下制作应用的演示/评估/试用版
  • 立即为其他平台制作可执行文件(交叉编译)
  • 制作某种自解压存档或安装程序
  • 无需安装Node.js和npm来运行打包的应用程序
  • 无需下载数百个文件npm install来部署您的应用程序。将其部署为单个文件
  • 将您的资产放在可执行文件中,使其更具可移植性
  • 针对新的Node.js版本测试您的应用程序而不安装它

用法

npm install -g pkg

安装后,运行pkg --help不带参数以查看选项列表。

项目的入口点是强制CLI参数。它可能是:

  • 输入文件的路径。假设它是/path/app.js,然后打包应用程序将以相同的方式工作node /path/app.js
  • 路径package.jsonPkg将遵循bin指定的属性package.json并将其用作条目文件。
  • 目录的路径。Pkgpackage.json在指定的目录中查找。往上看。

目标

pkg可以一次为多个目标计算机生成可执行文件。您可以通过--targets 选项指定以逗号分隔的目标列表。规范目标由3个元素组成,例如用短划线分隔,node6-macos-x64或者node4-linux-armv6

  • nodeRange节点$ {n}或最新
  • 平台 freebsd,linux,alpine,macos,win
  • arch x64,x86,armv6,armv7

您可以省略任何元素(并仅指定node6)。省略的元素将从当前平台或系统范围的Node.js安装(其版本和拱门)中获取。还有一个别名host,这意味着所有3个元素都取自当前的platform / Node.js。默认情况下,目标是 linux,macos,win针对当前的Node.js版本和arch。

配置

在打包过程中,pkg解析您的源,检测调用require,遍历项目的依赖项并将它们包含在可执行文件中。在大多数情况下,您无需手动指定任何内容。但是,您的代码可能有require(variable)调用(所谓的非文字参数require)或使用非JavaScript文件(例如视图,CSS,图像等)。

require('./build/' + cmd + '.js')
  path.join(__dirname, 'views/' + viewName)

此类案件不予处理pkg。因此,您必须在文件的pkg属性中手动指定文件 - 脚本和资产package.json

"pkg": {
    "scripts": "build/**/*.js",
    "assets": "views/**/*"
  }

您还可以指定globs数组:

 "assets": [ "assets/**/*", "images/**/*" ]

请务必致电pkg package.jsonpkg .使用scriptsassets输入。

脚本

scripts水珠 或水珠的列表。指定为的文件scripts将使用编译v8::ScriptCompiler并放入可执行文件而不使用源。它们必须符合您所定位的Node.js版本的JS标准(参见目标),即已经过编译。

资产

assets水珠 或水珠的列表。指定的文件assets将作为原始内容打包为可执行文件而不进行修改。Javascript文件也可以指定assets。他们的消息来源不会被剥夺。它提高了这些文件的执行性能并简化了调试。

另请参阅 检测源代码和 快照文件系统中的资产

选项

可以使用运行时选项(属于Node.js或V8)调用Node.js应用程序。列出他们的类型node --help或 node --v8-options。您可以将这些运行时选项“烘焙”到打包的应用程序中。应用程序将始终在打开选项的情况下运行。只需--从选项名称中删除。

pkg app.js --options expose-gc
pkg app.js --options max_old_space_size=4096

产量

您可以指定--output是仅创建一个可执行文件还是--out-path为多个目标放置可执行文件。

调试

通过--debugpkg获得一个日志包装过程。如果您遇到某些特定文件的问题(似乎没有打包成可执行文件),查看日志可能会很有用。

建立

pkg有所谓的“基本二进制文件” - 它们实际上是相同的 node可执行文件,但应用了一些补丁。它们用作每个可执行文件pkg创建的基础。pkg 在打包应用程序之前下载预编译的基本二进制文件。如果您更喜欢从源代码编译基本二进制文件而不是下载它们,您可以将--build 选项传递给pkg。首先确保您的计算机满足编译原始Node.js:BUILDING.md的要求

打包应用的用法

对打包应用程序的命令行调用./app a b相当于node app.js a b

 相关资料
  • 问题内容: 因为Node.js现在也可以在Windows上使用,所以我想共享我的脚本而不包含node.exe。是否可以将脚本(没有更多文件)与node.exe一起打包到一个可执行文件中? 问题答案: 您绝对可以,并且使用JXcore非常容易。 在Windows上安装JXcore之后,只需运行: 这将产生一个.exe文件,您可以分发该文件并且可以在没有任何外部依赖项的情况下执行该文件(您甚至在系统上

  • 我有一个由3个模块组成的分级项目: (无依赖项) (依赖于) (取决于两个模块)

  • 单模块 maven 项目打包 在单一模块的maven项目开发中,我们通常在 src/main/resources 编写我们的配置文件,因此,在 maven 构建的时候,我们需要添加如下配置: <resources> <resource> <directory>src/main/resources</directory> <includes>

  • 本文向大家介绍spring boot打包成可执行jar包,包括了spring boot打包成可执行jar包的使用技巧和注意事项,需要的朋友参考一下 在使用spring boot进行打包的时候出现了一些问题,不是说找不到主类,就是说spring初始化时有些类没有加载。 下面介绍一下如何解决。 这样就能够打出jar包了。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 我有一个Python脚本,希望将其编译为Windows可执行文件。现在,在Windows上可以正常工作,但是我希望能够在Linux上运行它。我的开发机器上 确实 有Windows,但是Linux是我的主要开发平台,我有点讨厌重新启动Windows只是为了创建Windows 。我也不需要购买第二个Windows许可证即可在VirtualBox等虚拟机中运行。有任何想法吗? PS:我知道,

  • 本文向大家介绍java项目打包成可执行jar用log4j将日志写在jar所在目录操作,包括了java项目打包成可执行jar用log4j将日志写在jar所在目录操作的使用技巧和注意事项,需要的朋友参考一下 开发一个demo时想将日志输出到最终打包的jar所在目录,从网上学习实验整理之后的配置如下, log4j.properties Main.java 最终打包成jar执行时,将会在jar文件所在目录

  • 问题内容: 我正在尝试编译一个Maven项目,源代码使用Generics和Java 1.5的其他功能,因此导致构建失败 在我中,我针对源和目标属性针对1.5配置了构建配置,但这不能解决我的问题 我是对的还是我错过了什么? 谢谢 尝试构建时输出 问题答案: 您使用有关源/目标的一些信息配置了程序集插件,但是要配置编译,您需要以正确的方式配置编译器插件。 更新: 这应该与maven-enforcer-

  • 多项目打包 上一节你给你的项目定义了一个层次化的目录结构,整个项目包含一个根目录和每个模块一个子目录,这一节你将学习怎么用Gradle来构建这样一个项目结构。 首先在你的根目录新建一个build.gradle文件,创建一个空的build脚本然后运行gradle projects: $ gradle projects :projects -------------------------------