javascript - 如何在 Gitlab CI 中缩小 Javascript 代码?
问题描述
我为网络编写 Javascript 代码,我通常在上传之前将其缩小。我使用专用工具(如UglifyJS)在本地执行此操作,但我想使用Gitlab 持续集成稍微自动化该过程(因为我在这个项目中使用 Gitlab)。
我的目标似乎很简单:使用 Gitlab CI 来缩小某些事件的代码,并以一种方便的方式输出这些文件,以便我获取它们。
但是,我还没有找到任何东西(教程或其他)来做到这一点。
我对 Gitlab CI 的经验很少,所以我真的不知道从哪里开始,但我尝试将其分解为更小的问题: - 我找不到可以使用 Gitlab CI 运行的压缩/缩小的简单脚本,它主要是更大的实用程序(YUI Compressor、Google Closure Compiler)。- 如果我找到压缩文件的方法,我可以从 CI 将它们推送到我的存储库吗?如果是的话,我想知道这是否真的是一个好习惯,因为这会版本化没有用的缩小文件。
我对不太复杂的事情的最佳尝试似乎是可以与其 API 一起使用的Google Closure Compiler 。如果我理解正确,我可以使用Gitlab 的 Webhooks进行 API 调用(不确定我将如何以这种方式传递数据,但我会看看我能做什么)。但是,我如何阅读响应(Gitlab Webhooks 似乎不适合)?也许直接在 Gitlab CI 中进行这些 API 调用会更好,但我不确定如何诚实,主要是如何获取压缩数据以及我可以用它做什么(在哪里存储它)。
解决方案
我的回答来得有点晚,但它可能对其他人有所帮助。IMO,最简单的方法是使用专用工具,例如yuicompressor(也适用于 CSS)。这是一个示例gitlab-ci
:
before_script:
- apt-get update && apt-get install -y -qq sshpass
- apt-get install -y -qq default-jdk
- mkdir yuicompressor
- wget -P yuicompressor/ https://github.com/yui/yuicompressor/releases/download/v2.4.8/yuicompressor-2.4.8.jar
deploy_production:
stage: deploy
environment: Production
only:
- master
script:
- java -jar yuicompressor/yuicompressor-2.4.8.jar -o '.js$:.js' src/static/js/*.js
- export SSHPASS=$SSH_PASS
- sshpass -e scp -o stricthostkeychecking=no -r src/* user@some_domain.net:~/www/
解释
此管道在使用 sshpass将整个项目发送到生产服务器之前缩小并替换其中包含的所有 js 文件。src/static/js/
src
脚本之前
由于 gitlab 运行器默认没有java,所以我们安装它apt-get install -y -qq default-jdk
。然后我们只需要wget
yuicompressor 的 jar
希望能帮助到你
推荐阅读
- internet-explorer - 仅在使用 Internet Explorer 10+ 时才提醒消息
- node.js - Inquirer.js,在问题开头更改符号?
- ios - 通过枚举值在循环中注册 UITableView 单元格
- python - 访问插入值
- css - 按钮与文本重叠
- simulink - If 和 Multiple 语句
- linux - 如何在 shell 的第一个空字符之后提取文件中的所有内容
- javascript - src/app/app.module.ts(15,15) 中的错误:错误 TS2304:找不到名称“ServiceName”
- php - PHP将逗号分隔的字符串分解为数组
- javascript - Vue反应性问题,需要一些解释