Node.JS

    NodeJS 语言识别规范

    平台默认会根据源码根目录是否有来识别为 NodeJS 项目.

    平台编译运行机制

    1. 预编译处理会探测是否定义了启动命令配置文件Procfile,如果未定义会读取package.json文件中的script.start值来生成启动配置文件;
    2. 预编译处理完成后,会根据语言类型选择 nodejs 的 buildpack 去编译项目.在编译过程中会安装定义的 Node 版本以及 Nodejs 相关依赖;
    3. 编译完成后会检查是否在平台设置了 Procfile 参数,若配置了会重写启动命令配置文件 Procfile.

    NodeJS 项目源码规范

    在此步骤中,你需要提供一个可用的 NodeJS 源码程序用来部署在 Rainbond 平台上,此应用程序至少需要满足如下条件:

    1. 本地可以正常运行的 NodeJS 项目
    2. 源码程序必须托管在 gitlab 等相关 git 或者 svn 服务上
    3. 源码程序根路径下必须存在package.json,用来管理 NodeJS 项目的依赖,也是 Rainbond 识别为 NodeJS 语言的必要条件
    Procfile 规范

    如果项目未定义 Procfile 文件,平台会根据package.json文件中的script.start值来生成默认 Procfile。

    上述是默认 Procfile,如果需要扩展更多启动参数,可以自定义 Procfile。

    1. web:npm之间有一个空格
    2. 文件结尾不能包含特殊字符

    编译运行环境设置

    Node 版本支持
    1. 4.9.1
    2. 6.14.4
    3. 7.10.1
    4. 8.12.0
    5. 9.11.2
    6. 10.13.0
    7. 11.1.0

    平台默认版本使用8.12.0。可以在 package.json 里使用 engines 指定版本:

    1. {
    2. "name": "myapp",
    3. "description": "a really cool app",
    4. "version": "0.0.1",
    5. "node": "4.8.7"
    6. }
    7. }

    0.8.5 之后的版本包括 0.11.13 也是支持的,以下是使用 0.11.x 版本的例子:

    npm 版本不是必须的,可以省略,因为 npm 是跟 node 绑定的。

    依赖包安装

    Node 项目支持使用 npm package manager 和 安装依赖包,如果存在yarn.lock 文件,使用 yarn(默认支持版本 1.9.4)安装依赖和运行脚本,否则使用 npm。

      1. {
      2. "engines": {
      3. "yarn": "1.9.4"
      4. }
      5. }
    自定义构建脚本

    如果您的应用在构建时需要执行额外的操作,可以在 package.jsonscripts 节点下添加 postinstall 脚本,该脚本会在 buildpack 执行完 npm install —production 后自动执行,可参考package.json 示例:

    1. {
    2. "version": "0.0.1",
    3. "description": "nodejs demo",
    4. "dependencies" : {
    5. "bower": "~1.3.9",
    6. "grunt-cli": "~0.1.13",
    7. "scripts": {
    8. "start": "node index.js",
    9. "test": "mocha",
    10. "postinstall": "bower install && grunt build"
    11. },
    12. "engines": {
    13. "node": "9.3.0"
    14. }
    15. }

    系统默认不自带 grunt、gulp、bower 这些工具,但是会安装 package.jsondependenciesdevDependencies 节点下的依赖,所以自定义执行的命令也需要作为依赖添加到此节点下,否则可能会找不到命令,这些工具执行时需要的依赖也是如此。

    仓库私服设置
    npm 私服设置

    npm 构建默认使用淘宝私服地址: https://registry.npm.taobao.org 如果希望能够自定义 npm install 时使用的私服仓库地址,则需要添加自定义环境变量:

    yarn 私服设置

    yarn 构建并不支持环境变量设置私服,但是可以通过 preinstall 关键字设置私服地址。

    1. "scripts": {
    2. "preinstall": "bash preinstall.sh",
    3. "build": "/tmp/build/node_modules/.bin/vue-cli-service build --mode test"
    4. },
    1. yarn config set registry http://X.X.X.X:8080/repository/npm-group/ --global

    示例 demo 程序

    示例