node.js - 构建后使用 gzip 的 Github Actions
问题描述
在 github 操作中构建后,我一直在尝试找出一种方法来 gzip 我的构建文件。我的构建不会自动执行此操作,我不确定它应该在何处或何时压缩。
我的操作有一个构建项目的有效运行命令,但是根据我的运行方式,压缩要么失败,要么不起作用。
这是我最近尝试的方式:
- name: Build
run: |
npm ci
npm run build --prod --aot
- name: GZIP
run: |
npm install gzip-cli
gzip ./dist/*.js -k -9
我敢肯定这里的答案是“你不能那样做”或者“你不能那样做”,但我不知道从这里去哪里。我的服务器本身不压缩文件,我不知道如何让 github 做到这一点。我需要所有js
文件才能拥有gz
文件。
我试过使用gzipper
as well ,gzip-cli
控制台通常会输出这个:
npm install gzipper
gzipper --exclude jpg,jpeg,png,svg ./dist
shell: /bin/bash -e {0}
npm WARN karma-jasmine-html-reporter@1.5.1 requires a peer of jasmine-core@>=3.5 but none is installed. You must install peer dependencies yourself.
+ gzipper@3.4.2
updated 1 package and audited 19029 packages in 11.676s
33 packages are looking for funding
run `npm fund` for details
found 2 high severity vulnerabilities
run `npm audit fix` to fix them, or `npm audit` for details
/home/runner/work/_temp/96763ca6-0048-4812-a8bb-72bf33d14fcc.sh: line 2: gzipper: command not found
##[error]Process completed with exit code 127.
看起来它安装得很好,但是它显示找不到命令(无论是 gzipper 还是 gzip-cli)。
如果我使用普通的 old gzip
,我不会收到任何错误。它运行,但实际上并没有压缩任何东西。难道是github在上传之前将文件临时存储在某个地方?
解决方案
使用您用于安装gzip-cli
或的当前方法gzipper
,它们将被保存到当前项目的node_modules
文件夹中。它们的可执行文件也将安装在node_modules/.bin
(可以通过运行找到npm bin
)。PATH
但是,除非您全局安装它们,否则您的项目依赖可执行文件通常在环境变量中不可用。
安装时,npm 会将该文件符号链接到全局安装或本地安装。
prefix
/bin
./node_modules/.bin/
因此,您应该:
-g
使用标志全局安装依赖项。如果 npm 的.bin
目录包含在 中PATH
,则可以轻松执行命令。运行
$(npm bin)/
附加到命令的命令:$(npm bin)/gzip ./dist/*.js -k -9
或者添加一个执行相同操作的脚本。通常,npm 脚本将在环境变量中具有可供它们使用的依赖可执行文件
PATH
:{ "scripts: { "gzip-files": "gzip ./dist/*.js -k -9" }, "dependencies": { "gzip-cli": "/* version range */" } }
推荐阅读
- sql - 如何使 Oracle 11g 基于时间的 SQL 注入查询包括 count(*) case count(*)
- jfr - 如何配置自定义 JFR 事件的间隔
- node.js - 部署 Firebase 和 Node.js 应用程序导致错误:错误:remoteconfig.template.json 中的解析错误:Unexpected token 'i' at 1:1
- android - 在下次更新中更改 App Bundle 名称会产生任何问题吗?
- html - 为什么项目在我的网格视图中“跳过”所有其他位置?
- api - 有没有办法通过 Docusign connect 接收每个签名的信封状态?
- angular - 如何在其构造函数中使用 vars 创建单例?
- go - Proto3 JSON 未将字段名称转换为 camelCase
- angular - 使用字符串插值显示对象的特定属性
- javascript - 动画被执行,但随后立即返回初始状态