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

  • 此文只做简单介绍,详细使用方式请自行搜索或man查看。 pkg-config可用与列举出某个库的相关信息,比如此库的路径、相关头文件路径等,这在程序编译时将非常有用。例如,现在要编译一个依赖librtmp.so库的程序。去哪找librtmp.so相关的头文件呢?librtmp.so库又在哪呢?这是一个大问题,但有了pkg-config后这些都不是问题。先使用以下命令看看: xjh@debian:~

  • 原文: Guide for pkg-config http://people.freedesktop.org/~dbn/pkg-config-guide.html  Dan Nicholson Translated By Bob 2011-11-13 Email:gexbob@gmail.com Blog:http://blog.csdn.net/exbob  ------------------

  • 理解 pkg-config 工具 By Robin On 2011年03月22日 · 1 Comment · In OS, 信息世界 | IT 你在 Unix 或 Linux 下开发过软件吗?写完一个程序,编译运行完全正常,在你本机上工作得好好的,你放到源代码管理系统中。然后,告诉你的同事说,你可以取下来用了。这时,你长长的出了一口气,几天的工作没有白费,多么清新的空气啊,你开始飘飘然了。 “Hi

  • 本人在 ubuntu18.04 虚机编译 riscv-openocd 时遇到了一些 pkg-config 相关的问题,现总结分享出来,给有需要的人提供一个可参考的解决方案。 riscv-openocd 是从 GitHub 上直接 clone 下来的源码,在执行 ./configure 时报错,导致无法生成 Makefile 文件: ./configure: line 4523: syntax er

  • 码字不易,转载请注明出处喔~~  原文网址:http://blog.csdn.net/newchenxf/article/details/51750239 1 什么是pkg-config pkg-config是一个linux下的命令,用于获得某一个库/模块的所有编译相关的信息。  例子: pkg-config opencv –libs –cflags 结果: <span style="color:

  • pkg-config提供了下面几个功能: 检查库的版本号。如果所需要的库的版本不满足要求,它会打印出错误信息,避免链接错误版本的库文件。 获得编译预处理参数,如宏定义,头文件的位置。 获得链接参数,如库及依赖的其它库的位置,文件名及其它一些连接参数。 自动加入所依赖的其它库的设置。 这一切都自动的,库文件安装在哪里都没关系! 为了让pkg-config可以得到这些信息,要求库的提供者,提供一个.p

  • 1 pkg-config介绍 pkg-config用来检索系统中安装库文件的信息。典型的是用作库的编译和连接。如在Makefile中: program: program.c     cc program.c `pkg-config --cflags --libs gnomeui` pkg-config --list-all    可以列出所有可使用的包。 pkg-config要求库提供一个.pc元

  • 天说自己被Ubuntu养懒了,确实懒了,懒得自己连系统的某些工具的用处都不知道。比如pkg-config 以前一直不知道,Linux下那么多库,在./configure时时怎么判断它们存不存在的,难道是靠递归搜索?现在我才知道我zt了,pkg-config这个命令和/*/lib/pkgconfig下的一些.pc文件才是主角。 每个.pc文件定义了库的名字、路径、编译选项等,比如glib-2.0.p

  • PKG文件实例   ;Languages &EN ;Header ,TYPE=SA #{"SymbianPT"},(0xE01FF1e5),2,1,0 ;Localised Vendor name %{"Forum Nokia"} ;Unique Vendor name :"Forum Nokia" ;Supports S60 v 3.0 [0x101F7961], 0, 0, 0, {"S60P

  • pkg-config 命令简介: pkg-config 是一个常用的库信息提取工具。 pkg-config 工具从.pc文件中提取编译链接配置路径。 pkg-config 从一个叫做PKG_CONFIG_PATH的环境变量中查找pc文件 设置 环境变量命令: export PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig:$PKG_CONFIG_PATH 应用例子: 1

  • 简介 pkg-config用于返回系统中已安装库的元信息。pkg-config对库元信息查询是通过在指定目录中去查询xxx.pc文件,从xxx.pc文件中解析得到库对元信息。 pkg-config搜索路径 默认路径: 通过命令"pkg-config --variable pc_path pkg-config"获取。 xxx:~$ pkg-config --variable pc_path pkg-

  • 1. pkg.go.dev 的未来规划 在 2019 年, Go 官方启动了名为 go.dev(https://go.dev) 的新域名, 这是面向 Go 开发人员的新 Hub。 作为该站点的一部分, 还启动了 pkg.go.dev, 这是有关 Go package 和 module 的文档中心, 旨在取代 http://godoc.org。在新的一年里, Go team 将不断优化 pkg.go

  • [编译环境] pkg-config for mac 安装 由于大部分的开源工程都需要用到pkg-config,因此今天在这讲解一下pkg-config for mac 安装过程. 1.检测环境是否已安装pkg-config 再命令行中输入: pkg-config 若未安装,则提示命令未找到. 2.安装pkg-config curl http://pkgconfig.freedesktop.org/

  • 全局安装 npm i -g pkg 修改配置文件 package.json 添加 “bin”:"./bin/www", { "name": "llt-publish-tool", "version": "0.0.0", "private": true, "scripts": { "start": "nodemon ./bin/www" }, "bin":"./b

  • 在oracle包体中动态创建表的简单例子,主要是权限申明。 本文在包体中实现,同思路可以改在存储过程中。 调用: begin -- Call the function :result := pkg_createtable.uf_createtable(as_sql => :as_sql); end; 包体源码 PKG_CREATETABLE.pck CREATE OR REPLACE P

 相关资料
  • 问题内容: 因为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 -------------------------------