{"_id":"@anonymousmister/crane-tool","_rev":"5-6570df3f4d803a112638fe9aac313d9b","name":"@anonymousmister/crane-tool","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@anonymousmister/crane-tool","version":"1.0.0","keywords":["crane","jib","docker","nginx","vite"],"author":{"name":"misterzhang"},"license":"MIT","_id":"@anonymousmister/crane-tool@1.0.0","maintainers":[{"name":"misterzhang","email":"1345260334@qq.com"}],"homepage":"https://github.com/xaboy/form-create-designer#readme","bugs":{"url":"https://github.com/xaboy/form-create-designer/issues"},"bin":{"crane":"bin/crane","crane-tool-build":"bin/build.js"},"dist":{"shasum":"56bae705fa4228658fc7ab0be27b5aa968f78f15","tarball":"https://registry.npmjs.org/@anonymousmister/crane-tool/-/crane-tool-1.0.0.tgz","fileCount":4,"integrity":"sha512-WulcmU9sNvOXJm6Gzest85jAodn/K4dtUOg7cnXM9PbPHy/cEmqYr5FPAv7Q+psL/ygBe3IjXzN+NwRBKUkyjw==","signatures":[{"sig":"MEUCIHFf8b/k/OCRy42DbHx1wdbK5qq1cIPTi6vhPFefHE+zAiEA9EEXpFiuA5vdpshVhvl9SSeVSgwNa7ct+sOUivroeOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12120},"main":"bin/build.js","type":"module","_from":"file:anonymousmister-crane-tool-1.0.0.tgz","scripts":{"postinstall":"node bin/install.js"},"_npmUser":{"name":"misterzhang","email":"1345260334@qq.com"},"_resolved":"/private/var/folders/xz/c1z4t2m96tn8xn_k03yynls80000gn/T/bbd03345b1d692652797917eca0d4f5a/anonymousmister-crane-tool-1.0.0.tgz","_integrity":"sha512-WulcmU9sNvOXJm6Gzest85jAodn/K4dtUOg7cnXM9PbPHy/cEmqYr5FPAv7Q+psL/ygBe3IjXzN+NwRBKUkyjw==","repository":{"url":"git+https://github.com/xaboy/form-create-designer.git","type":"git"},"_npmVersion":"10.9.3","description":"基于 Crane 的分层镜像构建工具,模仿 jib 的功能","directories":{},"_nodeVersion":"22.19.0","dependencies":{"ini":"^6.0.0","tar":"^7.5.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/crane-tool_1.0.0_1766733293749_0.8005393956218723","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.1":{"name":"@anonymousmister/crane-tool","version":"1.0.1","keywords":["crane","jib","docker","nginx","vite"],"author":{"name":"misterzhang"},"license":"MIT","_id":"@anonymousmister/crane-tool@1.0.1","maintainers":[{"name":"misterzhang","email":"1345260334@qq.com"}],"homepage":"https://github.com/xaboy/form-create-designer#readme","bugs":{"url":"https://github.com/xaboy/form-create-designer/issues"},"bin":{"crane-tool-build":"bin/build.js"},"dist":{"shasum":"dd0879e7819f144897f0fc62719b3e15a0711deb","tarball":"https://registry.npmjs.org/@anonymousmister/crane-tool/-/crane-tool-1.0.1.tgz","fileCount":4,"integrity":"sha512-XkVLUCqghTAp2HKW9b/yRfMwSFxhVamyaRhW1B/2PksZd3cl0oUt3EHv7KFzpj1GOfv24eIlJTtnctgt7LFDuA==","signatures":[{"sig":"MEUCIQD5hB9Ce1fxTNUs7tBLxirAdwim9SKD1rMc4so/GfG3ZwIgLWOnXIsWx7xhc09e3iwA4IVLjPtlG0LvSwIZU7AYdaY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12092},"main":"bin/build.js","type":"module","_from":"file:anonymousmister-crane-tool-1.0.1.tgz","scripts":{"postinstall":"node bin/install.js"},"_npmUser":{"name":"misterzhang","email":"1345260334@qq.com"},"_resolved":"/private/var/folders/xz/c1z4t2m96tn8xn_k03yynls80000gn/T/ca321363df4042a6ba056a4f53e49091/anonymousmister-crane-tool-1.0.1.tgz","_integrity":"sha512-XkVLUCqghTAp2HKW9b/yRfMwSFxhVamyaRhW1B/2PksZd3cl0oUt3EHv7KFzpj1GOfv24eIlJTtnctgt7LFDuA==","repository":{"url":"git+https://github.com/xaboy/form-create-designer.git","type":"git"},"_npmVersion":"10.9.3","description":"基于 Crane 的分层镜像构建工具,模仿 jib 的功能","directories":{},"_nodeVersion":"22.19.0","dependencies":{"ini":"^6.0.0","tar":"^7.5.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/crane-tool_1.0.1_1766733985232_0.5216513225293684","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.2":{"name":"@anonymousmister/crane-tool","version":"1.0.2","keywords":["crane","jib","docker","nginx","vite"],"author":{"name":"misterzhang"},"license":"MIT","_id":"@anonymousmister/crane-tool@1.0.2","maintainers":[{"name":"misterzhang","email":"1345260334@qq.com"}],"homepage":"https://github.com/xaboy/form-create-designer#readme","bugs":{"url":"https://github.com/xaboy/form-create-designer/issues"},"bin":{"crane":"bin/crane-cli.js","crane-tool-build":"bin/build.js"},"dist":{"shasum":"4b7a26078f3177c0a98672948a2bf5141f3edcb3","tarball":"https://registry.npmjs.org/@anonymousmister/crane-tool/-/crane-tool-1.0.2.tgz","fileCount":5,"integrity":"sha512-Yyot88E1sIQH3WE1xXWBw+QbDwT8NC+P2TaUh7oQtemxlqaXKgpcjwEBgpEXxIJ74ZoqgSMV/xcf2079EtMHeQ==","signatures":[{"sig":"MEYCIQD07aRCTZl/2Ok1yufrdyuJ4/xiUN4n/GOx/KaQbJeguwIhAI48Bi6E3PDJbgyL0cpwkT4oRO4soVjJyFnXzEmELYR7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14340},"main":"bin/build.js","type":"module","_from":"file:anonymousmister-crane-tool-1.0.2.tgz","scripts":{"postinstall":"node bin/install.js"},"_npmUser":{"name":"misterzhang","email":"1345260334@qq.com"},"_resolved":"/private/var/folders/xz/c1z4t2m96tn8xn_k03yynls80000gn/T/b84fccafb6ac4280e58a8a686715cd56/anonymousmister-crane-tool-1.0.2.tgz","_integrity":"sha512-Yyot88E1sIQH3WE1xXWBw+QbDwT8NC+P2TaUh7oQtemxlqaXKgpcjwEBgpEXxIJ74ZoqgSMV/xcf2079EtMHeQ==","repository":{"url":"git+https://github.com/xaboy/form-create-designer.git","type":"git"},"_npmVersion":"10.9.3","description":"基于 Crane 的分层镜像构建工具,模仿 jib 的功能","directories":{},"_nodeVersion":"22.19.0","dependencies":{"ini":"^6.0.0","tar":"^7.5.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/crane-tool_1.0.2_1766735372264_0.41389201009196785","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0":{"name":"@anonymousmister/crane-tool","version":"1.1.0","keywords":["crane","jib","docker","nginx","vite"],"author":{"name":"misterzhang"},"license":"MIT","_id":"@anonymousmister/crane-tool@1.1.0","maintainers":[{"name":"misterzhang","email":"1345260334@qq.com"}],"homepage":"https://github.com/xaboy/form-create-designer#readme","bugs":{"url":"https://github.com/xaboy/form-create-designer/issues"},"bin":{"crane":"bin/crane-cli.js","crane-tool-build":"bin/build.js"},"dist":{"shasum":"5c66b45773479a8008cc5135579e47c58d8b220e","tarball":"https://registry.npmjs.org/@anonymousmister/crane-tool/-/crane-tool-1.1.0.tgz","fileCount":5,"integrity":"sha512-j45PN5AYkmC50+WbOg6BWPV8eF3KfXzUcqSXhPW6q6M90LY+htmkoRJvteMKB6zBCHVs9ugJxfJ/Zz1z5+fEVA==","signatures":[{"sig":"MEUCIQDJx1O7C176rI2QkUROjNTLxHrRrf07CK2R6gzzfNYyawIgJW+rukZ/tZNwHXH8ZDJdN8kd0ALrCI5pBP98rEEil7I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14680},"main":"bin/build.js","type":"module","_from":"file:anonymousmister-crane-tool-1.1.0.tgz","scripts":{"postinstall":"node bin/install.js"},"_npmUser":{"name":"misterzhang","email":"1345260334@qq.com"},"_resolved":"/private/var/folders/xz/c1z4t2m96tn8xn_k03yynls80000gn/T/690f52557fb0ace0724f38b6284d682a/anonymousmister-crane-tool-1.1.0.tgz","_integrity":"sha512-j45PN5AYkmC50+WbOg6BWPV8eF3KfXzUcqSXhPW6q6M90LY+htmkoRJvteMKB6zBCHVs9ugJxfJ/Zz1z5+fEVA==","repository":{"url":"git+https://github.com/xaboy/form-create-designer.git","type":"git"},"_npmVersion":"10.9.3","description":"基于 Crane 的分层镜像构建工具,模仿 jib 的功能","directories":{},"_nodeVersion":"22.19.0","dependencies":{"ini":"^6.0.0","tar":"^7.5.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/crane-tool_1.1.0_1766738117036_0.09076402212531787","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2025-12-26T07:14:53.634Z","modified":"2025-12-28T01:23:16.580Z","1.0.0":"2025-12-26T07:14:53.905Z","1.0.1":"2025-12-26T07:26:25.389Z","1.0.2":"2025-12-26T07:49:32.412Z","1.1.0":"2025-12-26T08:35:17.182Z"},"bugs":{"url":"https://github.com/xaboy/form-create-designer/issues"},"author":{"name":"misterzhang"},"license":"MIT","homepage":"https://github.com/xaboy/form-create-designer#readme","keywords":["crane","jib","docker","nginx","vite"],"repository":{"url":"git+https://github.com/xaboy/form-create-designer.git","type":"git"},"description":"基于 Crane 的分层镜像构建工具,模仿 jib 的功能","maintainers":[{"name":"misterzhang","email":"1345260334@qq.com"}],"readme":"\n\n# Crane-Jib-Tool 🚀\n\n一个轻量级、声明式的容器镜像构建工具。无需 Docker 守护进程，通过 `crane` 实现类似 Google Jib 的文件分层打包与推送功能。支持 JSON 模板、INI 配置注入以及动态变量替换。\n\n## ✨ 特性\n\n* **免 Docker 构建**：直接生成 OCI 兼容镜像并推送到远程仓库。\n* **声明式分层**：通过 `crane.json` 定义本地文件到镜像路径的精确映射。\n* **动态模板引擎**：支持 `${Variable}` 占位符，可从环境、文件或命令行注入。\n* **内置时间戳**：自动生成 `${TimestampTag}` 变量，支持版本回溯。\n* **多格式支持**：变量源支持 `.json`、`.ini` 文件及 `KEY=VALUE` 字符串。\n\n## 📦 安装\n\n首先，确保您的项目中已安装必要的依赖：\n\n```bash\nnpm install tar ini\n# 或者\npnpm add tar ini\n\n```\n\n## 🛠 快速开始\n\n### 1. 准备镜像模板 `crane.json`\n\n在项目根目录创建模板文件，使用占位符定义动态内容：\n\n```json\n{\n  \"from\": \"nginx:stable-alpine\",\n  \"image\": \"swr.cn-east-3.myhuaweicloud.com/your-project/${APP_NAME}\",\n  \"tag\": \"${TimestampTag}\",\n  \"exposedPorts\": [80, 443],\n  \"envs\": {\n    \"APP_ENV\": \"${NODE_ENV}\",\n    \"BUILD_VERSION\": \"${VERSION}\"\n  },\n  \"layers\": [\n    {\n      \"name\": \"nginx-conf\",\n      \"files\": [\n        { \"from\": \"./nginx.conf\", \"to\": \"etc/nginx/conf.d/default.conf\" }\n      ]\n    },\n    {\n      \"name\": \"static-assets\",\n      \"files\": [\n        { \"from\": \"./dist\", \"to\": \"usr/share/nginx/html\" }\n      ]\n    }\n  ]\n}\n\n```\n\n### 2. 执行构建\n\n使用 `-t` 指定模板，使用 `-f` 注入变量：\n\n```bash\n# 基础用法（使用内置时间戳）\nnode bin/build.js -t crane.json -f \"APP_NAME=my-admin\" -f \"NODE_ENV=prod\"\n\n# 覆盖自动生成的 Tag\nnode bin/build.js -t crane.json -f \"TimestampTag=v1.0.0\" -f \"APP_NAME=web\"\n\n```\n\n## 📖 详细用法\n\n### 变量注入优先级\n\n工具会按以下顺序合并变量（后者覆盖前者）：\n\n1. **系统环境变量** (`process.env`)。\n2. **内置变量**：`${TimestampTag}` (格式: `YYYYMMDDHHMMSS`)。\n3. **文件变量**：通过 `-f config.json` 或 `-f config.ini` 加载。\n4. **命令行变量**：通过 `-f \"KEY=VALUE\"` 直接指定。\n\n### 使用 INI 文件作为变量源\n\n您可以创建一个 `deploy.ini`：\n\n```ini\nAPP_NAME = wlhy-wj-admin\nVERSION = 2.4.5\nDOCKER_USER = your_username\nDOCKER_PASS = your_password\n\n```\n\n然后运行：\n\n```bash\nnode bin/build.js -t crane.json -f deploy.ini\n\n```\n\n## 🚀 运行流程说明\n\n1. **变量初始化**：收集环境、内置时间戳及 `-f` 传入的所有参数。\n2. **模板渲染**：将 `crane.json` 中的占位符替换为实际数值。\n3. **本地打包**：根据 `layers` 定义，将本地文件临时打包为 `tar` 层。\n4. **推送镜像**：调用 `crane append` 将所有层合并推送到目标仓库。\n5. **修改元数据**：调用 `crane mutate` 配置 `ExposedPorts` 和 `Env` 变量。\n6. **自动清理**：构建完成后自动删除 `.crane_tmp` 临时目录。\n\n## ⚠️ 注意事项\n\n* **认证**：如果提供了 `DOCKER_USER` 和 `DOCKER_PASS` 变量，工具会自动执行 `crane auth login`。\n* **安全性**：对于私有仓库（如 `192.168.x.x`），工具会自动添加 `--insecure` 标志。\n","readmeFilename":"README.md"}