justme-cli
v0.3.0
Published
一个对文件内容指定的正则匹配内容进行加解密的 CLI 工具
Maintainers
Readme
justMe-cli
一个对文件内容指定的正则匹配内容进行加解密的 CLI 工具。
功能特性
- 🔒 支持对文件中匹配的内容进行加密/解密
- 🔍 支持自定义正则表达式或使用默认注释正则
- 📁 支持单个文件或整个文件夹的批量处理
- 🛡️ 支持多种加密算法(Base64、AES、DES)
- 👀 支持实时监听文件变化自动处理
- 🚫 智能跳过已处理内容,避免重复加密/解密
- 🏷️ 自动标识符管理 - 为已加密/解密内容添加标识符,防止重复处理
- 🌍 兼容 Windows、macOS、Linux 系统
- ⚡ 高性能的文件处理和错误处理机制
标识符功能
为了防止重复加密/解密,工具会自动为处理后的内容添加标识符:
- 加密标识符:
!!- 标识内容已被加密 - 解密标识符:
!- 标识内容已被解密
标识符工作原理
- 加密时:原始内容被加密后,前面会添加
!!标识符 - 解密时:加密内容被解密后,前面会添加
!标识符 - 重复保护:工具会自动检测标识符,跳过已处理的内容
- 转换处理:可以在已解密内容和已加密内容之间相互转换
标识符示例
<!-- 原始内容 -->
<!-- !页面组件 -->
<!-- 加密后 -->
<!-- !!6aG16Z2i57uE5Lu2 -->
<!-- 解密后 -->
<!-- !页面组件 -->安装
全局安装
npm install -g justme-cli本地开发
git clone <repository-url>
cd justme-cli
npm install使用方法
基本命令格式
justme -i <输入路径> -o <输出路径> [选项]命令行参数
| 参数 | 长参数 | 描述 | 必需 |
|------|--------|------|------|
| -i | --input | 输入文件或文件夹路径 | ✅ |
| -o | --output | 输出文件或文件夹路径 | ✅ |
| -r | --regex | 完整正则表达式数组 | ⚠️* |
| -n | --normal-regex | 使用默认注释类型正则表达式 | ⚠️* |
| -e | --encrypt | 加密模式 | ⚠️** |
| -d | --decrypt | 解密模式 | ⚠️** |
| -er | --encrypt-rule | 加密规则 (默认: base64) | ❌ |
| -dr | --decrypt-rule | 解密规则 (默认: base64) | ❌ |
| -p | --password | 加解密密码 (AES/DES 需要) | ❌ |
| -w | --watch | 实时监听文件变化 | ❌ |
| | --verbose | 显示详细输出 | ❌ |
⚠️* 必须指定
-r或-n中的一个
⚠️** 必须指定-e或-d中的一个,不能同时指定
支持的加密规则
base64- Base64 编码(默认)aes- AES 加密(需要密码)des- DES 加密(需要密码)
支持的文件类型
- JavaScript:
.js,.ts,.jsx,.tsx - Web:
.vue,.html,.htm - 样式:
.css,.scss,.sass,.less - 后端:
.py,.rb,.php,.java,.c,.cpp,.h - 脚本:
.sh,.bash,.zsh - 配置:
.json,.xml,.yaml,.yml
使用示例
1. 加密 Vue 文件中的注释
输入文件 example.vue:
<template>
<!-- !页面组件 -->
<div class="page-flex page-home">
<div class="page-container"></div>
</div>
</template>
<script>
export default {
methods: {
// !复制文本
onCopy(text) {},
},
};
</script>
<style lang="scss" scoped>
/* !站地址样式 */
.station-address {
display: flex;
}
</style>加密命令:
justme -i example.vue -o output.vue -e -n输出文件 output.vue(带标识符):
<template>
<!-- !!6aG16Z2i57uE5Lu2 -->
<div class="page-flex page-home">
<div class="page-container"></div>
</div>
</template>
<script>
export default {
methods: {
// !!5aSN5Yi25paH5pys
onCopy(text) {},
},
};
</script>
<style lang="scss" scoped>
/* !!56uZ5Zyw5Z2A5qC35byP */
.station-address {
display: flex;
}
</style>2. 解密文件
justme -i output.vue -o decrypted.vue -d -n解密后的文件 decrypted.vue(带解密标识符):
<template>
<!-- !页面组件 -->
<div class="page-flex page-home">
<div class="page-container"></div>
</div>
</template>
<script>
export default {
methods: {
// !复制文本
onCopy(text) {},
},
};
</script>
<style lang="scss" scoped>
/* !站地址样式 */
.station-address {
display: flex;
}
</style>3. 重复处理保护
当你再次对已处理的文件进行相同操作时,工具会自动跳过:
# 第一次加密 - 处理 3 个内容
justme -i example.vue -o output.vue -e -n
# 输出: 📊 统计: 处理了 1 个文件,匹配了 3 个内容
# 第二次加密同一文件 - 跳过所有内容
justme -i output.vue -o output2.vue -e -n
# 输出: 📊 统计: 处理了 1 个文件,匹配了 0 个内容4. 批量处理文件夹
justme -i ./src -o ./dist -e -n --verbose5. 使用自定义正则表达式
justme -i example.js -o output.js -e -r "/\/\/\s*TODO:\s*(.+)/g" "/\/\*\s*FIXME:\s*([^*]+)\*\//g"6. 使用 AES 加解密
justme -i examples/test-input.vue -o examples/output.vue -e -er aes -p "your-secret-key"
justme -i examples/output.vue -o examples/decrypted.vue -d -dr aes -p "your-secret-key"7. 使用 AES 加解密
justme -i examples/test-input.vue -o examples/output.vue -e -er des -p "your-secret-key"
justme -i examples/output.vue -o examples/decrypted.vue -d -dr des -p "your-secret-key"8. 实时监听文件变化
# 监听单个文件
justme -i examples/test-input.vue -o examples/output.vue -e -w
# 监听整个文件夹
justme -i ./src -o ./dist -e -w监听模式下,工具会:
- 首先执行一次完整处理
- 然后持续监听文件变化
- 文件修改时自动重新处理
- 按
Ctrl+C退出监听
默认注释正则表达式
工具内置了以下注释类型的正则表达式:
// HTML 注释 (Vue template)
/<!--\s*!([^>]+)-->/g
// JavaScript 单行注释
/\/\/\s*!(.+)/g
// CSS 注释
/\/\*\s*!([^*]+)\*\//g
// Python 注释
/#\s*!(.+)/g
// Shell 注释
/#\s*!(.+)/g注意:这些正则表达式匹配以 ! 开头的注释内容。
开发
安装依赖
npm install运行测试
npm test构建
npm run build更新日志
v0.3.0
- ✨ 新增标识符功能,自动管理加密/解密状态
- 🛡️ 智能防重复处理,提高工具安全性
- 🔄 支持加密/解密状态之间的转换
- 📝 完善文档和示例
v0.2.0
- 👀 新增实时监听功能
- 🚫 新增重复检测机制
- ⚡ 性能优化和错误处理改进
v0.1.0
- 🎉 首次发布
- 🔒 基本加密/解密功能
- 📁 文件和文件夹批量处理
- 🛡️ 多种加密算法支持
许可证
MIT License
贡献
欢迎提交 Issue 和 Pull Request 来改进这个项目。
