@exodus/stasis
可分析源代码捆绑了分辨率+细纹锁文件.
锁文件和捆绑只包含实际内容 使用过的。 。 。 .
通常比生产重点小约10倍 node_modules 安装.
执行这些让你把自动代码扫描和警报 集中在重要的代码上, 并让分析导入图了解.
理想工作流程: 创建捆绑 - > 分析 - > 船舶 确切的捆绑 生产.
Lockfile可以以可读形式证明捆绑,但这并不需要 - 捆绑本身可以是证明.
| 锁定文件 | 套装 |
|---|---|
stasis.lock.json | stasis.code.br |
| 每个文件内容完整性和导入图 | 包含每个文件的内容( 来源) 和导入图 |
| 人可读 | 压缩 |
| 仅从磁盘读取文件 | 装入或声明(可作为锁定文件) |
模式 : add, (中文(简体) ), replace, (中文(简体) ), frozen, (中文(简体) ), ignore | 模式 : load, (中文(简体) ), add, (中文(简体) ), replace, (中文(简体) ), frozen, (中文(简体) ), ignore |
锁文件与捆绑的主要区别在于,锁文件包含整齐性,而捆绑包含全部内容.
见 文件格式。 。 。 .
两者均可在全程运行(默认)或仅在 node_modules 范围.
为什么是单独的捆绑格式?
| 静态 | JS 捆绑工 | 来源图 | 东南亚 | 源 + 道克 柏油球 | 集装箱 | |
|---|---|---|---|---|---|---|
| 可运行 | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
| 包含原始来源 | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ |
| 来源匹配运行时间 | ✅ | ➖ | ++ 数据可以错误报告 | ➖ | ✅ | ✅ |
| 依赖性版本 | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
| 导入边缘 | ✅ | ❌ | ❌ | ❌ | 隐性 | 隐性 |
| 限制到相关的代码 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Lockfiles (npm/pnpm/etc) 未被提及:它们与"tarball"一栏相类似,但也需要网络,安装步骤而并非自成一体.
图标
| 命令 | 它会做什么 |
|---|---|
stasis run --lock=add app.js | 仅构建一个锁文件 |
stasis run --lock=frozen app.js | 对照锁定文件校验磁盘 |
stasis run --bundle=add app.js | 建立一个捆绑 |
stasis run --bundle=frozen app.js | 单独对照捆绑验证磁盘( 自试) |
stasis run --bundle=load app.js | 独自从捆绑中跑出 |
stasis run --lock=add --bundle=add app.js | 建立锁文件并捆绑在一起 |
stasis run --lock=frozen --bundle=load app.js | 从捆绑中运行, 对照锁文件校验 |
stasis run --lock=add --bundle=add --mock app.js | 没有应用程序的副作用( network, fs write) 构建 |
stasis run --lock=add --child-process app.js | 还证明装入了儿童工序的模块(如大都会改造工人) |
stasis run --bundle=add --fs=sync app.js | 构建一个同时抓取同步的捆绑 fs.readFileSync编号 :readdirSync 读取 |
stasis run --lock=add --import=./instrument.mjs app.js | 也加载预装模块; 其自己的图为跑道基础设施, 未验证 |
stasis bundle src/index.js | 静地建立捆绑, 不执行 |
stasis bundle --add src/worker.js | 将更多条目合并到现有的捆绑中 |
stasis bundle --conditions=react-native,browser app.js | 静态捆绑外加 exports编号 :imports 解析条件 |
stasis bundle --mainFields=react-native,browser,main app.js | 静态地捆绑纪念遗产包 mainFields |
stasis bundle --metro --platforms=ios,android app.js | 静态捆绑 Metro解决的方式,所有平台同时 |
stasis bundle --typescript src/index.ts | 静态捆绑 TS 源, 解析 ./x.js 进口到 ./x.ts 像tsc一样 |
stasis add src assets | 将文件添加到工程的捆绑中, 没有依赖分辨率 |
stasis github-bundle --github=owner/name --sha=<commit> src/index.js | 静态捆绑一个 GitHub 重播到一个任务, 没有安装 |
stasis build --output=out.js app.stasis.code.br [entry] | 重建一个可运行的 JS 包 与 esbuilt , 遵循 捆绑 记录的导入图 准确 |
stasis build --output=out.js stasis.lock.json [entry] | 同样,读取 + 从磁盘校验源对锁定文件 |
stasis build --platform=hermes --metro=ios --assets-dest=dist --output=main.js app.stasis.code.br | 构建一个 --metro 像Metro那样捆绑到一个平台:它的 .ios 文件、 作为 Metro 资产模块的资产、 复制出的文件 |
stasis extract --lock=add app.stasis.code.br | 解开捆绑回到源 +a stasis.lock.json |
stasis diff --stat a.lock.json b.stasis.code.br | 总结两个锁文件/捆绑之间的模块/文件差异 |
stasis prune | 修饰 node_modules 到锁文件, 验证其他文件 |
stasis audit stasis.lock.json | 报告锁定文件或捆绑依赖性的建议 |
stasis audit --why app.stasis.code.br | 同样,将每个标记的软件包拉入的导入链 |
stasis audit | 同样的,对于捆绑 stasis bundle 将建造 stasis.config.json是条目,不用写 |
stasis validate app.stasis.code.br | 检查一个捆绑的自有代码与它的寄存器和它的依赖关系与它们公布的软件包相对应, 并按其锁文件 |
stasis sbom --format=spdx stasis.lock.json | 导出一个锁文件或捆绑的 SPDX SBOM |
stasis sbom --format=cyclonedx app.stasis.code.br | 导出 CyproneDX SBOM 用于锁定文件或捆绑 |
每个命令的选项都记录在 医生/数字 :
run, (中文(简体) ),
bundle (和 add, (中文(简体) ),
github-bundle, (中文(简体) ),
build, (中文(简体) ),
extract, (中文(简体) ),
diff, (中文(简体) ),
prune, (中文(简体) ),
audit, (中文(简体) ),
validate, (中文(简体) ),
sbom。 。 。 .
stasis bundle 并捆绑固态、PHP、Bash、Rust和TEAL来源,参见 文件格式。 。 。 .
运行时间
零依赖性 @exodus/stasis-core CLI提供 run, (中文(简体) ), add, (中文(简体) ), extract 财务报告和审定财务报表 prune 仅命令.
捆绑插件居住于 @exodus/stasis-plugins。 。 。 .