云引擎 Node.js 运行环境
这篇文档是针对 Node.js 运行环境的深入介绍,如希望快速地开始使用云引擎,请查看 快速开始部署云引擎应用。
所有 Node.js 项目都必须在根目录包含一个 package.json 和启动脚本(如没有在控制台或 leanengine.yaml 内指定,请确保 package.json 内的 scripts.start 存在)才会被云引擎正确识别,云引擎也会从中读取项目对于环境的需求:
{
"name": "node-js-getting-started",
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js -- "
},
"dependencies": {
"leancloud-storage": "^3.11.0",
"leanengine": "^3.3.2"
},
"devDependencies": {
"nodemon": "^1.18.7"
},
"engines": {
"node": "16.x"
}
}
如果你希望创建一个新的项目,推荐从我们的 Node.js 示例项目 开始。
启动命令
云引擎默认使用 npm start 来启动项目,你可以在 package.json 中修改 scripts.start 来使用不同的程序入口或向 node 添加额外的参数。
{
"scripts": {
"start": "node server.js"
}
}
在使用 命令行工具 本地调试时,lean up 会优先使用 npm run dev 来启动项目。
配置 Node.js 版本
在 package.json 的 engines.node 字段可以指定 Node.js 版本:
{
"engines": {
"node": "16.x"
}
}
你还可以设置为 * 表示总是使用最新(current)版本。
如未设置 Node.js 版本,云引擎会默认使用最新的稳定(LTS)版本。
配置包管理器
云引擎目前支持以下包管理器:
云引擎会按照以下条件使用包管理器:
| 包管理器 | 条件 | 版本 |
|---|---|---|
| pnpm | 存在合法能被解析的 pnpm-lock.yaml | |
lockfileVersion: '6.0' 或更高 | 8 | |
lockfileVersion: 5.3 或更高 | 7 | |
| 其他 | 6 | |
| Yarn 1 | 存在 yarn.lock | 1 |
| Yarn 2+ | 不默认支持,需通过 Corepack 启用 | 2+ |
| npm | 其他情况 | 使用 Node.js 默认提供的 npm |
实验性 Corepack 支持
由于 Corepack 还是实验性特性,云引擎不能保证对 Corepack 的支持是稳定的
通过给分组设置 ENABLE_EXPERIMENTAL_COREPACK 环境变量为任意非空字符串来启用实验性 Corepack 支持。
云引擎会通过调用 Corepack 读取 package.json 里的 packageManager 字段来自动识别、使用用户指定的包管理器,这也是目前唯一一种使用 Yarn 2+ 的方式。
假设有以下 package.json:
{
"name": "example",
"packageManager": "yarn@4.0.2"
}
此时云引擎会自动调用 corepack prepare --activate 并识别包管理器为 Yarn 2+。
参考:Corepack
默认命令
云引擎默认运行的脚本会随着包管理器的变化而变化,如使用了 pnpm, npm ci 会变成 pnpm install --frozen-lockfile