Git игнорирует сгенерированные расширения

1

Я хочу сохранить файлы JavaScript (.js) под элементом управления git.

Однако, если существует файл TypeScript (.ts), я хотел бы проигнорировать связанный файл .js.

Есть ли способ достичь этого с помощью git?

EDIT: желательно без изменения каталогов и реорганизации всего существующего кода.

  • 2
    Я не использовал машинописный текст, но вы не можете попросить машинописный текст создать файлы javascript в другом каталоге?
  • 1
    Либо добавьте некоторый идентификатор в файл, например, _somefile.js либо выведите JS в другой каталог, например, generated/somefile.js
Показать ещё 1 комментарий
Теги:

1 ответ

5

Типичный способ сделать это - поместить любой скомпилированный вывод в некоторый каталог распространения. Вы могли бы организовать структуру своего каталога следующим образом:

src/
  ... various JavaScript files, etc.

dist/
  ... compiled output from any build tool you're using

Затем в git вы можете просто игнорировать каталог dist и предположить, что любой, кто собирается вытащить это репо и будет работать над ним, либо запустит инструмент сборки вручную, либо автоматически будет создан как часть процесса установки.

Другими словами, проще организовать его, не зависимо от конкретного набора функций git. Это довольно распространенный шаблон в мире JavaScript.

Если вы не пойдете на этот метод, другой способ сделать это - добавить некоторый идентификатор в файлы, которые вы хотите игнорировать. Например, вы можете добавить все свои файлы, которые хотите игнорировать, с помощью _, а затем добавить это правило в свой .gitignore (см. этот ответ, почему следующие работы ):

\_*

Есть некоторые недостатки этого второго подхода:

  • Другие используемые библиотеки могут использовать имена файлов, начинающиеся с аналогичного идентификатора, и будут происходить столкновения.
  • Трудно поддерживать; вы можете захотеть изменить идентификатор позже, если есть какое-то столкновение, или вы передумаете о своей структуре, и вам придется возвращаться через все файлы и изменять имена (конечно, это может быть автоматизировано, но это может быть болью)

Надеюсь, что это поможет.

  • 2
    This is a pretty common pattern in the JavaScript world. не только в JS. Практически все, что производит сгенерированный вывод, сделает это. В целом различие между источником и произведением является почти универсальным. Это был бы шаг сборки, чтобы взять все сгенерированные файлы и связать их (каким-то образом) в результат, который в этом случае может быть выражен как взятие всех файлов *.js и помещение их в каталог /js/ или что-то, но исключая *.ts как то не используется конечный продукт.
  • 0
    @Vlaz хорошее разъяснение, спасибо за комментарий.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню