跳到主要内容

JavaScript 使用指南

Node.js使用指南

使用apt安装Node.js

sudo apt-get update
sudo apt-get install -y nodejs npm

检查是否安装成功。

$ node -v
v18.13.0
$ npm -v
9.2.0

Bianbu源中的Node.js默认版本为v18.13.0,若想使用特定版本的Node.js,请使用NVM安装。

使用NVM安装特定版本Node.js

安装NVM

根据 https://github.com/nvm-sh/nvm 提供的命令行下载并执行安装脚本,请根据该仓库替换最新的NVM版本号。

使用curl:

sudo apt install curl
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

或使用wget:

sudo apt install wget
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

检查是否安装成功。

$ nvm -v
0.40.1

安装Node.js

目前官方源中的node尚未适配riscv,直接安装会导致错误,因此我们从unofficial-builds中下载已适配riscv的node。更多信息请参考 https://github.com/nodejs/unofficial-builds/

NVM_NODEJS_ORG_MIRROR=https://unofficial-builds.nodejs.org/download/release nvm install 20.16.0

检查是否安装成功。

$ node -v
v20.16.0

示例

clumsy-bird

克隆demo项目。

git clone https://github.com/ellisonleao/clumsy-bird

安装依赖。

cd clumsy-bird
npm install
sudo apt install grunt

运行服务。

grunt connect

你可以看到如下输出,服务默认部署在http://0.0.0.0:8001,在浏览器中打开该网页进行体验。

$ grunt connect
Running "connect:root" (connect) task
Waiting forever...
Started connect web server on http://0.0.0.0:8001

Electron使用指南

准备工作

请先安装Node.js。

快速开始

下载electron-quick-start

git clone https://github.com/electron/electron-quick-start.git ~/electron-quick-start

安装SpacemiT的Electron包,

cd ~/electron-quick-start
ELECTRON_MIRROR=http://archive.spacemit.com/electron/ electron_use_remote_checksums=1 npm install electron@29.3.1

启动应用,

npm start

当看到下面界面,表示成功。

electron-quick-start

electron-builder使用指南

electron-builder 是一个用于简化 Electron 应用打包和发布的工具,支持多平台构建和自动更新功能。目前官方源中的electron-builder和相关组件未完全适配RISCV平台,因此需要使用SpacemiT适配的内部版本。这里以 electron-quick-start 为打包项目。

准备工作

请先安装Node.js。

克隆仓库

git clone https://github.com/electron/electron-quick-start.git
cd electron-quick-start

配置package.json

vim package.json

在"scripts"下添加打包命令,分别用于目录、压缩包。这里使用了SpacemiT适配RISCV的Electron镜像。

  "scripts": {
"pack-dir": "ELECTRON_MIRROR=http://archive.spacemit.com/electron/ electron-builder --linux --dir",
"pack-tgz": "ELECTRON_MIRROR=http://archive.spacemit.com/electron/ electron-builder --linux tar.gz"
}

添加打包配置。

  "build": {
"productName": "demo",
"directories": {
"output": "build"
},
"linux": {
"category": "Utility"
}
},

添加依赖项,请使用@【仓库】/【依赖包】来指定从哪个仓库下载包。@electron指SpacemiT的 Node.js包仓库

  "devDependencies": {
"electron": "29.3.1",
"@electron/electron-builder": "25.0.0-alpha.5"
}

最后你的package.json会像这样:

{
"name": "electron-quick-start",
"version": "1.0.0",
"description": "A minimal Electron application",
"main": "main.js",
"scripts": {
"start": "electron .",
"pack-dir": "ELECTRON_MIRROR=http://archive.spacemit.com/electron/ electron-builder --linux --dir",
"pack-tgz": "ELECTRON_MIRROR=http://archive.spacemit.com/electron/ electron-builder --linux tar.gz"
},
"repository": "https://github.com/electron/electron-quick-start",
"keywords": [
"Electron",
"quick",
"start",
"tutorial",
"demo"
],
"author": "GitHub",
"license": "CC0-1.0",
"build": {
"productName": "demo",
"directories": {
"output": "build"
},
"linux": {
"category": "Utility"
}
},
"devDependencies": {
"electron": "29.3.1",
"@electron/electron-builder": "25.0.0-alpha.5"
}
}

配置仓库地址

npm config set @electron:registry https://git.spacemit.com/api/v4/projects/36/packages/npm/

安装依赖

这里通过镜像地址指定使用适配RISCV的electron,请勿在npm config配置Electron和electron-builder的镜像地址,否则命令指定的镜像地址将失效。可以通过npm config list检查。

ELECTRON_MIRROR=http://archive.spacemit.com/electron/ electron_use_remote_checksums=1 npm install

项目打包

以目录发布

npm run pack-dir

该命令会在输出目录(此处设为build)下输出文件夹linux-riscv64-unpacked

bianbu@k1:~/electron-quick-start$ tree build/linux-riscv64-unpacked/ -L 1
build/linux-riscv64-unpacked/
├── chrome_100_percent.pak
├── chrome_200_percent.pak
├── chrome_crashpad_handler
├── chrome_sandbox
├── electron-quick-start
├── icudtl.dat
├── libEGL.so
├── libffmpeg.so
├── libGLESv2.so
├── libvk_swiftshader.so
├── libvulkan.so.1
├── LICENSE.electron.txt
├── LICENSES.chromium.html
├── locales
├── resources
├── resources.pak
├── snapshot_blob.bin
├── v8_context_snapshot.bin
└── vk_swiftshader_icd.json

3 directories, 17 files

以压缩包发布

npm run pack-tgz

该命令会在输出目录(此处设为build)下输出压缩包electron-quick-start-1.0.0-riscv64.tar.gz

bianbu@k1:~/electron-quick-start$ tar -ztf build/electron-quick-start-1.0.0-riscv64.tar.gz 
electron-quick-start-1.0.0-riscv64/
electron-quick-start-1.0.0-riscv64/LICENSE.electron.txt
electron-quick-start-1.0.0-riscv64/LICENSES.chromium.html
electron-quick-start-1.0.0-riscv64/chrome_100_percent.pak
electron-quick-start-1.0.0-riscv64/chrome_200_percent.pak
electron-quick-start-1.0.0-riscv64/chrome_crashpad_handler
electron-quick-start-1.0.0-riscv64/chrome_sandbox
electron-quick-start-1.0.0-riscv64/electron-quick-start
electron-quick-start-1.0.0-riscv64/icudtl.dat
electron-quick-start-1.0.0-riscv64/libEGL.so
electron-quick-start-1.0.0-riscv64/libGLESv2.so
electron-quick-start-1.0.0-riscv64/libffmpeg.so
electron-quick-start-1.0.0-riscv64/libvk_swiftshader.so
electron-quick-start-1.0.0-riscv64/libvulkan.so.1
electron-quick-start-1.0.0-riscv64/locales/
electron-quick-start-1.0.0-riscv64/resources/
electron-quick-start-1.0.0-riscv64/resources.pak
electron-quick-start-1.0.0-riscv64/snapshot_blob.bin
electron-quick-start-1.0.0-riscv64/v8_context_snapshot.bin
electron-quick-start-1.0.0-riscv64/vk_swiftshader_icd.json
electron-quick-start-1.0.0-riscv64/locales/......
electron-quick-start-1.0.0-riscv64/resources/app-update.yml
electron-quick-start-1.0.0-riscv64/resources/app.asar

以deb发布

发布deb包的压缩耗时较长,请耐心等待。

打包deb要求设置email等信息,请在package.json中添加下列信息。

  "author": "lff <junzhao.liang@spacemit.com>",
"email": "junzhao.liang@spacemit.com",
"homepage": "www.google.com",

安装fpm。

sudo apt install ruby3.1
sudo gem install fpm

打包deb,可相应修改命令参数。发布压缩包的压缩耗时较长,请耐心等待。

mkdir tmp
fpm -s dir --force -t deb -d libgtk-3-0 -d libnotify4 -d libnss3 -d libxss1 -d libxtst6 -d xdg-utils -d libatspi2.0-0 -d libuuid1 -d libsecret-1-0 --deb-recommends libappindicator3-1 \
--deb-compression xz \
--architecture riscv64 \
--description 'A minimal Electron application' \
--version 1.0.0 \
--package /home/bianbu/electron-quick-start/build/electron-quick-start_1.0.0_riscv64.deb \
--name electron-quick-start \
--maintainer 'lff <junzhao.liang@spacemit.com>' \
--url https://www.google.com \
--vendor 'lff <junzhao.liang@spacemit.com>' \
--deb-priority optional \
--license CC0-1.0 \
/home/bianbu/electron-quick-start/build/linux-riscv64-unpacked/=/opt/demo \
./tmp=/usr/share/applications/electron-quick-start.desktop

在fpm的打包命令中添加下列参数,可设置应用图标。

/home/bianbu/electron-quick-start/node_modules/@electron/app-builder-lib/templates/icons/electron-linux/16x16.png=/usr/share/icons/hicolor/16x16/apps/electron-quick-start.png

该命令会在输出目录(此处设为build)下输出deb包electron-quick-start-1.0.0-riscv64.deb

运行应用

以目录发布

直接运行目录下的electron-quick-start

cd build/linux-riscv64-unpacked/
./electron-quick-start

以压缩包发布

将压缩包解压,运行解压目录下的electron-quick-start

cd build
tar -zxf electron-quick-start-1.0.0-riscv64.tar.gz
cd electron-quick-start-1.0.0-riscv64
./electron-quick-start

以deb包发布

安装deb包,执行安装的应用。

cd build
sudo dpkg -i electron-quick-start_1.0.0_riscv64.deb
/opt/demo/electron-quick-start