npm 包 serverless-plugin-custom-binary 使用教程

阅读时长 6 分钟读完

在使用 Serverless 框架开发 Serverless 架构应用时,我们常常需要将二进制文件打包到函数中去。而 serverless-plugin-custom-binary 就是一个可以轻松实现这个目标的 npm 包。本文将介绍如何使用 serverless-plugin-custom-binary 对 Serverless 应用中的二进制文件进行打包,并提供一些使用技巧和示例代码供参考。

安装 serverless-plugin-custom-binary

在初始化 Serverless 应用后,我们需要先安装 serverless-plugin-custom-binary。运行以下 npm 命令即可完成安装:

添加插件配置

安装完成后,在 serverless.yml 配置文件中添加 serverless-plugin-custom-binary 的配置信息。具体配置内容包括:

  • package.artifact 标记需要打包的二进制文件所在的目录;
  • package.include 打包时需要包含的文件,这里我们就将二进制文件名称列出;
  • plugins 引入 serverless-plugin-custom-binary 插件。

示例配置如下:

运行打包命令

完成配置后,即可在命令行中运行打包命令:

此时,serverless-plugin-custom-binary 将会自动打包 serverless.yml 配置文件中指定的二进制文件,并将其打包至 Serverless 应用中。

使用技巧

除了基本的打包操作外,serverless-plugin-custom-binary 还提供了一些非常实用的配置选项,可以让我们更灵活地控制打包过程。以下是一些使用技巧:

支持多个二进制文件

只需将 package_include 数组中的文件名增加即可:

压缩二进制文件

使用 UPX 工具可将可执行文件压缩至更小的体积,可以将其和 Serverless 应用一同打包。只需在 package_include 数组中加入一个命令行即可:

显式设置二进制文件运行权限

有些二进制文件需要指定运行权限,否则可能会因权限不足而无法正常运行。可以使用 package_permissions 参数来指定特定文件的运行权限:

-- -------------------- ---- -------
-------
  -------
    ----------------- ---
    ----------------
      - --------
      - -------------
    --------------------
      - ----- --------
        ------------ ------

处理二进制文件

有时我们需要对打包过程中的二进制文件进行一些额外的处理操作,比如更改文件名或处理二进制文件的内容。可以自定义 package_plugin 脚本来自定义这样的操作:

-- -------------------- ---- -------
-------
  -------
    ----------------- ---
    ----------------
      - --------
    ----------------
      - --------
          ---------------------
      - ---------
          ----- --------

以上示例中使用了 resolve 和 dos2unix 两个 npm 模块来演示自定义 plugin 的使用,读者可以根据自己的需求编写 custom plugin。

示例代码

下面是一段基本的 Serverless 应用代码,演示了 serverless-plugin-custom-binary 的使用方法:

-- -------------------- ---- -------
- --------------
-------- ---------

---------
  ----- ---
  -------- ----------

--------
  - -------------------------------

----------
  ------
    -------- -------------
    --------
      --------- -----------
    ------------
      -------- ------ -------
-- -------------------- ---- -------
-- ----------
---- --------
----- -- - --------------
----- ------- - --------------------
----- ------ - ------------------------------

-------------------- - ----- ------- -- -
  ---------------------
  --------------------
  ------ -
    ----------- ----
    ----- ---------------
      -
        -------- --------- -------- ---------------
        ------ ------
      --
      -----
      -
    --
  --
--

在示例代码中,我们将一个名为 mybinary 的二进制文件打包至应用中,并在 handler.js 文件中读取了它。需要注意的是,我们在读取二进制文件时使用了相对路径,这意味着必须将它与 Serverless 文件一同上传至 AWS Lambda 中。

假设我们的 mybinary 文件是一个 ELF 可执行文件,我们运行命令

后将收到以下提示:

这意味着我们的二进制文件已经被成功打包至 Serverless 应用中。

总结

serverless-plugin-custom-binary 是一款强大简便的 npm 包,它可以让我们轻松地将二进制文件打包至 Serverless 应用中,并提供了很多实用的配置选项供我们进行定制化开发。在使用 Serverless 框架时, serverless-plugin-custom-binary 将是你的得力助手。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/serverless-plugin-custom-binary