这个新的《单一可执行应用程序》功能听起来很酷,但尚不清楚如何使用 SEA 应用程序中的节点模块包。
我知道它提到了资产:
"assets": {
"a.jpg": "/path/to/a.jpg",
"b.txt": "/path/to/b.txt"
}
但是通过指向整个文件夹,这似乎不起作用:
{
"main": "hello.js",
"output": "sea-prep.blob",
"assets": {
"node_modules": "./node_modules"
}
}
如何打包node_modules?
我可以想到几种不同的方法。您可以在本地安装依赖项或使用自定义打包脚本。
本地安装依赖项:在创建SEA可执行文件之前,您可以使用npm install或yarn install在本地安装所有依赖项。这将使用所有必需的包填充项目目录中的 node_modules 文件夹。然后,当您创建 SEA 可执行文件时,将自动包含 node_modules 文件夹。
自定义打包脚本:如果您需要对打包过程进行更多控制,您可能需要使用自定义打包脚本。您将创建一个脚本,将 node_modules 文件夹复制到项目目录中的指定位置,然后在 SEA 配置文件中引用该文件夹。这种方法允许您在 SEA 可执行文件中显式包含 node_modules 目录。像这样的想法,
{
"main": "hello.js",
"output": "sea-prep.blob",
"assets": {
"node_modules": "./assets/node_modules"
}
}
项目结构可能看起来像这样,
project/
├── hello.js
├── sea-config.json
├── assets/
│ └── node_modules/
├── node_modules/
├── package.json
└── ...