如何将 Nodejs 包添加到 Yocto?

How to Add Nodejs Packages to Yocto?

我想要一个支持 nodejs 的 OS。在我的 layer.conf 文件的 yocto 项目中,我添加了 IMAGE_INSTALL_append = "node.js" IMAGE_INSTALL_append = "nodejs-npm" 这导致在烘焙后有一个 OS 和 nodejs 支持。现在我想添加一些 NPM 包,比如 basic-auth 等。 你能帮帮我吗 亲切的问候。

您可以在 Yocto 版本中添加 Openembedded Layer 可用的任何数据包。请查看 Openembedded Layer 以找到您想要的数据包。之后,您可以通过 local.conf 文件添加任何数据包。

如果您在页面上没有找到该包,您需要使用适合您平台的编译器自行编译并通过配方手动添加。

为了将 npm 包添加到您的映像中,您需要为其创建一个配方。

Yocto 有一个 npm 源方案处理程序,您可以使用 registry.npmjs.org 创建一个获取您想要的包的配方。

使用 devtool 创建配方:

devtool add "npm://registry.npmjs.org;name=basic-auth;version=latest"

您也可以设置特定版本。

配方如下:

  • basic-auth_2.0.1.bb :
# Recipe created by recipetool
# This is the basis of a recipe and may need further editing in order to be fully functional.
# (Feel free to remove these comments when editing.)

SUMMARY = "node.js basic auth parser"
# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is
# your responsibility to verify that the values are complete and correct.
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=42fffe6fe0b70501d52150ebb52113df \
                    file://node_modules/safe-buffer/LICENSE;md5=badd5e91c737e7ffdf10b40c1f907761"

SRC_URI = "npm://registry.npmjs.org/;name=basic-auth;version=latest"

NPM_SHRINKWRAP := "${THISDIR}/${PN}/npm-shrinkwrap.json"

inherit npm

# Must be set after inherit npm since that itself sets S
S = "${WORKDIR}/npmpkg"
LICENSE_${PN}-safe-buffer = "MIT"
LICENSE_${PN} = "MIT"

编译正确。

您可以在使用 devtool:

测试后将其移动到您的自定义层
devtool finish basic-auth <path/to/meta-custom> or
devtool finish basic-auth <layer/in/bblayers.conf>

有关 npm 处理的更多信息,请查看此 link

我鼓励您在 link

的官方文档中阅读更多关于 Yocto NPM 处理的信息

编辑:

如果遇到错误:

is missing the required parameter 'Parameter 'package' required'

只需将 name 更改为 package :

devtool add "npm://registry.npmjs.org;package=basic-auth;version=latest"