Github Действия с gzip после сборки - PullRequest
0 голосов
/ 08 января 2020

Я пытался найти способ сжать мои файлы сборки после сборки в действии github. Моя сборка не делает этого автоматически, и я не уверен, куда и когда он должен быть заархивирован.

У моего действия есть рабочая команда run, которая строит проект, но затем архивирование либо не выполняется, либо просто не выполняется. это не работает в зависимости от того, как я его запускаю.

Вот как я пытался в последнее время:

- name: Build
  run: |
    npm ci
    npm run build --prod --aot

- name: GZIP
  run: |
    npm install gzip-cli
    gzip ./dist/*.js -k -9

Я уверен, что ответ здесь либо "вы не можете сделать это "или" ты не можешь этого сделать ", но я не знаю, откуда go отсюда. Мой сервер не сам архивирует файлы, и я не уверен, как заставить github сделать это. Мне нужно, чтобы все файлы js имели файлы gz.

Я пытался использовать gzipper, а также 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).

Если бы я использовал обычный старый gzip, я не получил бы никакой ошибки. Он работает, но на самом деле ничего не архивирует. Может быть, github временно хранит файлы где-то перед загрузкой?

1 Ответ

2 голосов
/ 10 января 2020

Используя текущий метод, который вы используете для установки gzip-cli или gzipper, они будут сохранены в папке node_modules текущего проекта. Их исполняемые файлы также будут установлены в node_modules/.bin (что можно найти, запустив npm bin). Однако исполняемые файлы зависимостей вашего проекта обычно не будут доступны в переменной среды PATH, если вы не установите их глобально.

Из документов для поля bin для зависимости package.json:

При установке 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 */"
      }
    }
    
...