javascript - 如何在 Gitlab CI 中缩小 Javascript 代码?

标签 javascript gitlab webhooks minify gitlab-ci

我为网络编写 Javascript 代码,我通常在上传之前缩小。 我使用专用工具(如 UglifyJS)在本地执行此操作,但我想使用 Gitlab 持续集成(因为我在此项目中使用 Gitlab)稍微自动化该过程。

我的目标似乎很简单:使用 Gitlab CI 压缩某些事件的代码并输出这些文件,以方便我获取它们。

但是,我还没有找到任何东西(教程或其他)来执行此操作。

我对 Gitlab CI 的经验很少,所以我真的不知道从哪里开始,但我尝试将其分解为更小的问题: - 我找不到可以使用 Gitlab CI 运行的简单脚本,它主要是更大的实用程序(YUI Compressor、Google Closure Compiler)。 - 如果我找到压缩文件的方法,我可以将它们从 CI 推送到我的存储库吗?如果是,我想知道这是否真的是好的做法,因为这会对无用的缩小文件进行版本控制。

在不太复杂的事情上做得最好似乎是 Google Closure Compiler,它可以与其 API 一起使用。如果我理解正确,我可以使用 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/

解释

在将整个项目 src 发送到生产之前,此管道缩小并替换 src/static/js/ 中包含的所有 js 文件使用 sshpass 的服务器。

脚本之前

由于gitlab runners默认没有java,我们安装apt-get install -y -qq default-jdk。然后我们只需要wget yuicompressor 的jar

希望对你有帮助

关于javascript - 如何在 Gitlab CI 中缩小 Javascript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53317229/

相关文章:

docker - 这个 docker-compose.yml 文件有什么问题

webhooks - Telegram bot 消息读取回调

javascript - 为什么我使用 es6 时必须将尾部 'Provider' 添加到服务名称

docker -/bin/bash : line 117: kubectl: command not found gitlab-ci

javascript - jquery 插件回调重置默认选项

docker - Gitlab-runner 安装

stripe-payments - Stripe : handle the first subscription and webhook event

c# - c# 中的一个非常简单的 dialgoue 流实现 webhook 无法正常工作

javascript - jQuery.each 是否在每次迭代中计算集合表达式?

javascript - IE 错误与 jQuery 和超时