open-index/open-npm huggingface dataset:
npm package: @hr-components-dev/cli
Description: 本项目是江西淮然科技有限公司专门开发的组件化脚手架工具，旨在提升前端开发效率，统一组件开发规范，并支持组件加密保护功能。
Author: 淮然科技
Latest version: 1.3.4

# 江西淮然科技有限公司 - HR Components CLI 脚手架

## 项目概述

本项目是江西淮然科技有限公司专门开发的组件化脚手架工具，旨在提升前端开发效率，统一组件开发规范，并支持组件加密保护功能。

### 主要特性

- ✅ **Vue 3 + TypeScript 支持** - 基于最新的 Vue 3 Composition API 和 TypeScript 类型安全
- 🔐 **组件加密保护** - 提供组件代码加密和解密功能，保护知识产权
- 🧩 **组件化开发** - 支持快速开发和集成自定义组件
- ⚡ **Vite 构建** - 使用 Vite 进行快速构建和热更新

## 快速开始

### 环境要求

- Node.js >= 14.0.0
- npm 或 yarn 包管理器

### 安装与启动

```bash
# 克隆项目
git clone <repository-url>

# 进入项目目录
cd hr-components-cli

# 安装依赖
npm install

# 启动开发模式
npm run dev

├── src/                    # 源代码目录
│   ├── components/         # 可复用组件
│   ├── views/             # 页面视图
│   └── utils/             # 工具函数
├── dist/                  # 构建输出目录
├── types/                 # TypeScript 类型定义
├── decrypt.js             # Node.js 环境解密脚本
└── README.md              # 项目说明文档

解密
1. Node 环境项目
// decrypt.js
const fs = require('fs');
const CryptoJS = require('crypto-js');

// 读取加密文件内容（纯 Base64 字符串）
const encryptedContent = fs.readFileSync('./dist/your-component/index.js', 'utf8');

// 解密
const bytes = CryptoJS.AES.decrypt(encryptedContent, 'your-password-here');
const originalCode = bytes.toString(CryptoJS.enc.Utf8);

if (!originalCode) {
  console.error('❌ 解密失败：密码错误或文件损坏');
  process.exit(1);
}

console.log('✅ 解密成功！');
console.log(originalCode); // 原始 JS 代码

// 可选：写入新文件
fs.writeFileSync('./dist/your-component/index.decrypted.js', originalCode);

2. 浏览器环境项目

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>组件解密加载</title>
  <!-- 引入 CryptoJS -->
  <script src="https://cdn.jsdelivr.net/npm/crypto-js@4.2.0/crypto-js.min.js"></script>
</head>
<body>
  <script>
    // 模拟从服务器获取加密内容（实际可通过 fetch 获取）
    const encryptedContent = `...`; // ← 替换为你的加密字符串

    const password = prompt("请输入解密密码：");
    if (!password) {
      alert("需要密码才能加载组件！");
      throw new Error("No password provided");
    }

    try {
      const bytes = CryptoJS.AES.decrypt(encryptedContent, password);
      const originalCode = bytes.toString(CryptoJS.enc.Utf8);

      if (!originalCode) throw new Error("无效密码");

      // 执行原始代码（适用于 IIFE 或 UMD 格式）
      new Function(originalCode)();
      
      console.log("✅ 组件已解密并加载");
    } catch (e) {
      console.error("❌ 解密失败:", e);
      alert("密码错误或组件损坏！");
    }
  </script>
</body>
</html>
npm package: @hr-components-dev/render
Description: Standalone AmisRenderer component for Vue 3
Latest version: 1.3.4

# 江西淮然科技有限公司 - HR Components CLI 脚手架

## 项目概述

江西淮然科技有限公司出品 · 企业级 HR 组件渲染核心库
高性能、可扩展、安全可靠的前端组件渲染引擎，专为管理平台低代码系统打造。

### 📦 简介
@hr-components-dev/render 是 HR Components 生态体系的核心渲染层，基于 amis 和 Vue 3 构建，提供开箱即用的低代码页面渲染能力。支持动态表单、数据可视化、工作流配置等 HR 场景高频需求，同时集成加密保护机制，保障企业核心业务逻辑安全。

本包通常与 @hr-components-dev/cli 配合使用，实现“开发-加密-部署-运行”一体化流程。

## 快速开始

### 环境要求

- Node.js >= 14.0.0
- npm 或 yarn 包管理器

### ✨ 主要特性
🔥 高性能渲染：基于 amis + React/Vue 混合架构，支持万级数据流畅展示
🔐 代码加密支持：无缝对接 CLI 加密流程，运行时自动解密（需配合 decrypt 工具）
🌐 多端适配：响应式设计，完美支持 PC、平板及企业微信/钉钉内嵌
⚙️ 灵活扩展：支持自定义组件注册、API 代理、主题定制
📊 Monaco Editor 集成：内置代码编辑器，支持 JSON Schema 可视化配置

## 获取帮助


import AmisRenderer from '@hr-components-dev/render';

<AmisRenderer 
  ref="amisRef"                 <!-- 用于在父组件中通过 $refs.amisRef 获取 amis 实例，便于调用其方法（如更新数据、重载等） -->
  :debug="debug"                <!-- 是否开启调试模式；为 true 时会在控制台输出 amis 内部日志，便于排查问题 -->
  :schema="defaultSchema"       <!-- amis 页面配置 schema，描述页面结构和组件布局（JSON 格式） -->
  :data="defaultAmisData"       <!-- 初始数据上下文，供 schema 中的组件绑定和渲染使用（如表单默认值、列表数据等） -->
  :context="defaultAmisContext" <!-- 额外的上下文变量，可在 schema 的表达式或 API 配置中通过 ${xxx} 引用 -->
  @ready="amisReady"            <!-- 当 amis 渲染器初始化完成并准备就绪时触发，回调参数通常包含 amis 实例 -->
  @doRegister="doRegister"      <!-- amis 内部组件注册时触发（如自定义组件），可用于扩展功能或埋点监控 -->
/>

### 补充说明：
schema 是 amis 的核心，定义了整个低代码页面的结构。
data 和 context 的区别：
data 是当前作用域的数据模型，会随用户交互（如表单输入）自动更新。
context 是只读的上下文变量，通常用于传递全局信息（如用户 ID、租户标识），不会被 amis 修改。
@ready 是最常用的生命周期钩子，常用于保存 amis 实例以便后续操作：

const amisReady = (instance: any) => {
  amisInstance.value = instance;
  // 后续可通过 amisInstance.value.updateProps(...) 更新
};