从 NPM 到 EPM,爱智提供最大的兼容性

leecactus0 2022-02-17 16:32:26

EdgerOS 集成了由翼辉爱智自研的 JavaScript 运行时 JSRE,那么什么是 JSRE 呢?想必广大开发者, 尤其是 Web 开发者 对 Node.js 和 NPM 都非常熟悉了。类比 Node.js,就能比较容易的理解 JSRE 了,虽然 JSRE 和 Node.js 都是 JavaScript 运行时,可以运行 JavaScript 代码,但 API 的丰富程度以及部分 API 的调用、包的引入是有区别的,比如:

 

1.模块引入,和部分 API 调用方式不同。比如 JSRE 中目前仅支持 CommonJS 的 require 导入。因为 JSRE 应用文件系统沙盒的特性,__filename 和 __dirname 无法使用,需要以 module.filename 和  module.directory 代替。

 

2.JSRE 开放了事件循环,开发者可以自由地使用同步或者异步编程范式。值得注意的是,面向智能设备的通讯时,因为无需对异步 IO 进行同步化变换,同步式代码更简单,逻辑也更清晰

 

3.API 丰富程度不同。比如 JSRE 不仅内置了如 Node.js 一样的通用编程接口,还内置了 Web 框架、数据库、多媒体、AI 以及其他特有系统服务的 API。

 

4.运行平台,JSRE 目前仅支持 EdgerOS,而 Node.js 是运行在 Linux,Windows,macOS 等其他特有系统服务的 API。

 

因为运行时环境的诸多差异,为了避免开发中出现各种未知错误,这里建议不要在爱智应用内直接使用 NPM 包。同时,为了提供最大的兼容性,爱智团队为广大开发者免费提供了 JavaScript(以下简称 JS)软件包仓库:EdgerOS Package Manager (以下简称 EPM)。开发者仅需要使用 npm 命令就可以将自己开发的 JSRE 软件包发布到 EPM 上,也可以拉取 EPM 上的其他开源软件包直接使用。同时 EPM 还将自动将这些公共软件包同步到 npmjs.com/edgeros 组织内。

 

EPM 包发布说明

EPM 原则上仅提供与 EdgerOS 生态相关的 JS 开源软件包。对于通用的 JS 软件包建议大家直接发布到 npmjs.com 供更多的开发者使用。

 

 

软件包命名规范

在 NPM 命名规范的基础上,为了方便广大开发者查找,EPM 对软件包进行简单的分类,并制定了相应的命名规范:

  • @edgeros/jsre-xxx:软件包依赖于 EdgerOS 操作系统 JSRE 的专有 API,脱离 JSRE 将无法运行。

  • @edgeros/web-xxx:可以运行在浏览器中的单纯的 JS 软件包,通常与其它 @edgeros 软件包配合使用。

  • 其它软件包名:建议遵循行业常识和最佳实践,例如:

    • @edgeros/cli:爱智命令行开发工具包

  • @edgeros/eslint-plugin-jsre:JSRE 的 eslint 代码辅助提示插件

 

NPM 命名规范:

https://docs.npmjs.com/package-name-guidelines

 

其它注意事项

1.软件包名中禁止包含侮辱、敏感词汇

2.软件包不得包含恶意代码

3.EPM 目前不支持 unpublish,如果确实需要请通过 epm@edgeros.com 联系我们。

 

爱智运营团队保留在不通知发布者的情况下直接下架恶意软件包的权力!

商业软件开发者请谨慎发布您的软件包!

 

许可证

EPM 欢迎社区友好的开源许可证,包括但不限定于:

 

使用 EPM

使用 EPM 非常简单,只需要跟着以下教程,短短的几分钟,你就可以配置好并使用 EPM 了。

 

前置条件

在使用 EPM 之前需要确保两个必要前置条件:

 

1.确保安装 Node.js / NPM

启动 命令提示符(Windows用户) 或 终端(Lunux 或 Mac 用户) 程序后,这里以 Mac终端作为示例,键入 :


npm -v
# 7.3.0

如果输出版本号,则已安装 NPM,如提示“没有此命令”,则需要安装 Node.js。通常 Node.js 安装包会内置对应版本的 NPM。安装 Node.js 可以参考 Node.js 官方网站 。

 

Node.js 官方网站:

https://nodejs.org/zh-cn/download/

 

2.注册翼辉 ID

如果没有注册过 翼辉 ID,请到爱智官网进行注册:

 

只需要输入几项基本信息即可完成注册。

爱智官网:

https://id.edgeros.com/register

 

配置 NPM

配置 NPM 也非常的简单,只需要在命令行输入以下命令即可:


npm login --scope=@edgeros --registry=https://registry.epm.edgeros.com
# Username: 
# Password:
# Email: (this IS public)
# Logged in as xxx to scope @edgeros on https://registry.epm.edgeros.com/.

并按提示输入 Username,Password,Email 即可完成配置。其中 Username,Password,Email 分别为翼辉ID翼辉ID 密码,电子邮件地址 信息

  • scope=@edgeros:限定了 NPM 的组织机构范围

  • registry=https://registry.epm.edgeros.com:指定了 EPM 软件包注册中心的服务地址

 

登录成功后,npm 将提示 “Logged in as xxx to scope @edgeros on https://registry.epm.edgeros.com/”。同时 NPM 会自动地添加您此次登录所配置的 registry,scope,token 等信息保存在 .npmrc 文件中。

 

可以通过(Linux)命令 cat ~/.npmrc 查看该文件的内容 (Windows 用户请查看 %userprofile%/.npmrc 文件),请确保文件中已经包含了如以下例子中的配置信息:


@edgeros:registry=https://registry.epm.edgeros.com/
//registry.epm.edgeros.com/:username=翼辉ID
//registry.epm.edgeros.com/:_password=xxxxxxxxx
//registry.epm.edgeros.com/:email=xxx@example.com
//registry.epm.edgeros.com/:always-auth=false

其中 @edgeros:registry=https://registry.epm.edgeros.com/ 一行说明对于 @edgeros 这个组织内的软件包将从 EPM 站点获取。以下的几行分别保存了你在 EPM 网站使用的 翼辉 ID 、密码以及公共可见的电子邮件地址。

 

注意:如果 NPM 版本大于7.7.0,当执行 npm login 时,scope 参数可能会丢失,如果 .npmrc 文件中没有:


@edgeros:registry=https://registry.epm.edgeros.com/

这一行代码,则需要手动将其添加至:.npmrc 文件。

至此 NPM 已经配置完成,接下来就可以使用 NPM 命令安装,发布软件包了。

 

安装软件包

开发者可以进入 EPM 网站 浏览和搜索已发布的开源软件包,找到合适的软件包后就可以使用 npm 命令从 EPM 安装软件包,例如:

npm install @edgeros/welcome

此外,您也可以使用如 npm info 等命令查看软件包信息

 

EPM 网站:

https://epm.edgeros.com/

 

发布软件包

当您已经成功使用 翼辉 ID 登录 EPM 并完成软件包的开发之后,仅需要通过 npm publish 的标准流程就可以把软件包发布到 EPM。更多信息请参考 npm publish, 例如:


cd /path/to/your/package
npm publish

以上关于 EPM 的使用全部介绍完毕,那我们就趁热打铁,发布一个 EPM 包试试。

 

开发一个 EPM 包并发布和安装

如果按照上述步骤配置好 NPM,则可以根据以下步骤轻松的完成 EPM 包的开发,发布和安装。

 

开发并发布

1.创建一个项目文件夹 hello,并在 Linux 终端或者 Windows 命令提示符窗口中进入该改文件夹:

cd hello

2.初始化 npm,按提示输入包相关信息,这里需要注意的是包名必须以 @edgeros/开头

npm init

项目初始化完成后会生成 package.json 文件:


{
  "name": "@edgeros/hello",
  "version": "1.0.0",
  "description": "hello",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "hello"
  ],
  "author": "",
  "license": "MIT"
}

3.创建 index.js 文件,并使用你喜欢的编辑器填入代码:

function hello (name) {
  console.log(`Hello, ${name} !`);
}

module.exports = hello;

    4.创建 README.md 文件:

     

    # hello
    Say hello to EdgerOS community.
    
    ## usage
    ```js
    const hello = require('@edgeros/hello');
    hello('scott');
    ```

    5.发布 EPM 包

    
    npm publish

    此时我们就可以去 EPM 网站,查询我们所发布的 EPM 包了。

    安装 EPM 包

    1.进入 EPM 网站 ,输入关键词查询我们刚刚发布的包

     搜索结果:

     点击包名,进入详情页面

     现在我们已经可以安装并使用这个软件包了:

    
    npm install @edgeros/hello

     至此,我们已经完成了 npm 配置,并且成功在 EPM 上发布了属于自己的第一个 EdgerOS 软件包,是不是还有点小激动?虽然这个软件包还没有什么实际的意义和用途,但是让我们引用谢耳朵的一句话 —— “Because I can!”。当然,优秀的软件包需要不断的迭代和打磨,小伙伴们只要坚持不懈,说不一定还能打造出上万周下载量的知名工具包,成为 EdgerOS 社区的红人呢。

    ...全文
    991 2 打赏 收藏 转发到动态 举报
    AI 作业
    写回复
    用AI写文章
    2 条回复
    切换为时间正序
    请发表友善的回复…
    发表回复
    • 打赏
    • 举报
    回复

    恭喜您这篇帖子入选《社区周刊Vol.18 | 2022年,各大科技公司的科研水平如何?》:https://bbs.csdn.net/topics/604952833 已随社区周刊一起被推荐至CSDN首页,期待您社区的更多优质内容!

    m0_61644941 2022-02-18
    • 打赏
    • 举报
    回复
    这个非常好,有EPM后不只与NPM兼容,而且清晰明了,EPM都是拿来就可以在爱智上使用的包

    1,582

    社区成员

    发帖
    与我相关
    我的任务
    社区描述
    爱智开发者平台是一个开放的物联网平台,通过爱智世界,应用开发者可以把自己的应用分发到亿万用户的设备上,硬件开发者能够把设备能力开放给海量的开发者,让优质的应用脱颖而出,为用户提供更优秀的使用体验。
    边缘计算物联网javascript 企业社区
    社区管理员
    • EdgerOS
    • Lumos_zbj
    • dayinfinite
    加入社区
    • 近7日
    • 近30日
    • 至今
    社区公告
    暂无公告

    试试用AI创作助手写篇文章吧