# ohos_polyfill
**Repository Path**: zhyx147/ohos_polyfill
## Basic Information
- **Project Name**: ohos_polyfill
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 20
- **Created**: 2023-09-02
- **Last Updated**: 2023-09-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# openharmony-polyfill
该项目是一个 polyfill,包含 NodeJs 所有模块的子集以及一款 webpack 插件。用于 npm 仓中 nodejs build-in 基础模块的 api 适配,通过 webpack 插件形式集成到 Openharmony 的 SDK 中,避免原 npm 库在鸿蒙平台上使用时做侵入式修改。目前包括如下 [Node Apis](http://nodejs.cn/api-v16/):
| nodejs 模块 | 描述 | 备注 |
| :-----------: | :--------------: | :---------------------: |
| [events] | 事件触发与监听 |
| [path] | 文件和目录的路径 |
| [buffer] | 缓冲区 |
| [stream] | 流 |
| [process] | 进程 | 目前实现了 nextTick |
| [querystring] | 查询字符串 |
| [util] | 工具 |
| [url] | 统一资源定位 |
| [timers] | 定时器 | 目前实现了 setImmediate |
# 简述
- **openharmony-node-polyfill**:包含全部核心代码,开发思想是参考 NodeJs 中的模块以及 Api 的设计,基于 openharmony 现有的能力去做封装适配
- **openharmony-webpack-plugin**:是一款 webpack 插件,主要用于 openharmony-polyfill 的集成。原理是利用了 webpack 打包时,加载模块失败重定向的机制,重定向到 openharmony-polyfill 中。
# 如何使用
- 1.找到 openharmony 的 SDK 目录
> 例如:\Users\AppData\Local\OpenHarmony\Sdk\ets\1.1.1.5\build-tools\ets-loader
- 2.新建终端,在当前 SDK 目录运行如下命令安装
```
npm install @ohos/openharmony-webpack-plugin --save
```
- 3.在当前 SDK 目录下,找到 webpack.config.js 文件,配置 openharmony-webpack-plugin 插件。
```
const OpenharmonyPolyfillWebpackPlugin = require("@ohos/openharmony-webpack-plugin");
```
```
{
plugins:[
...,
new OpenharmonyPolyfillWebpackPlugin()
]
}
```
- 4.现在当你在 openharmony 使用某一个 npm 包,且这个 npm 包使用了 NodeJs build-in 的模块,这个包无需做任何侵入式修改即可正常使用。
## 约束与限制
在下述版本验证通过:DevEco Studio: 3.1 Beta1(3.1.0.200),OpenHarmony SDK: API9(3.2.10.6)。
## 贡献代码
使用过程中发现任何问题都可以提 [Issue](https://gitee.com/openharmony-sig/openharmony-polyfill/issues)
给我们,当然,我们也非常欢迎你给我们发 [PR](https://gitee.com/openharmony-sig/openharmony-polyfill/pulls) 。
## 开源协议
本项目基于 [Apache License 2.0](https://gitee.com/openharmony-sig/openharmony-polyfill/blob/master/LICENSE) ,请自由地享受和参与开源。