Если вы разработали тему или плагин WordPress, то вы знаете, как быстро ваша кодовая база может вырасти за короткое время.
Вы начинаете с нескольких PHP, JavaScript и CSS файлов. Затем вы создаете ресурсы изображений и добавляете их в свою кодовую базу вместе со своими аналогами из файла Photoshop. Через некоторое время вы включите и другие сторонние библиотеки PHP. Затем, когда вы, наконец, будете готовы к отправке вашего проекта WordPress, вы получите сеть из файлов нескольких типов, таких как *.php
, *.css
, *.scss
, *.js
, *.min.js
, *.png
и *.psd
, возможно, у вас будут скрытые файлы, такие как .DS_Store
.
В конечном итоге вам нужно будет очистить базу кода, прежде чем архивировать их для своих пользователей. Обычно это просто означает, что вы дублируете свои файлы, а затем сканируете каждый каталог, удаляя все ненужные файлы. Затем вы архивируете свой проект, а затем, возможно, используете стороннее приложение для удаления скрытых файлов.
В этой статье вы узнаете, как автоматизировать этот процесс упаковки, создав пакет TextMate, который сделает все за нас с помощью одной клавиши быстрого доступа.
Введение в комплекты TextMate
Пакеты в TextMate похожи на плагины в WordPress. Плагины WordPress предоставляют дополнительную функциональность ядру WordPress. Таким же образом, комплекты TextMate предоставляют дополнительные функциональные возможности для TextMate, такие как окрашивание частей вашего кода для лучшего восприятия кода или выполнение определенного процесса при нажатии сочетания клавиш.
Одна из полезных особенностей TextMate Bundles заключается в том, что вы можете использовать любой язык программирования, доступный локально для вашей системы. Некоторые языки, изначально доступные для Mac, это Bash, Perl, Ruby и Python. Для целей этой статьи я буду использовать Python для кодирования Bundle.
Что мы собираемся построить?
Прежде чем мы начнем кодировать, сначала нам нужно завершить то, что мы хотим, чтобы наш пакет делал. Нам нужно уметь:
- упаковать весь наш проект в zip-файл,
- указать, какие файлы не должны быть включены,
- указать, какие файлы всегда должны быть включены, и
- вызвать это с помощью сочетания клавиш +
command
+shift
+s
Создание нашего пакета
Теперь давайте перейдем к созданию нашего пакета. Откройте редактор Bundle из строки меню TextMate ( Bundles> Edit Bundles … ). Должно появиться окно, которое выглядит так:
С открытым окном Bundle и текущим видом создайте новый файл в строке меню ( File> New ), затем выберите, чтобы создать новый Bundle :
По умолчанию ваш Bundle будет называться «Bundle YourUserName» , вы можете изменить это на правой панели окна Edit Bundle .
Выбрав Bundle, снова зайдите в строку меню, затем создайте новый файл ( File> New ), но на этот раз выберите Command :
Измените имя вашей «безымянной» команды на нечто более описательное, например «Package WP Project» .
2.0-alpha.9503
, скриншоты здесь могут отличаться от вашего экрана, но содержимое должно быть таким же. Код команды
На данный момент у нас есть новый Bundle с командой, которая еще ничего не делает.
В окне Edit Bundle нажмите на команду, которую мы только что создали. В нижней части окна находится код, который будет выполнен при запуске нашей команды. Поскольку команда является новой, TextMate был достаточно любезен, чтобы добавить в наш пример код hello world :
1
2
|
#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -wKU
puts ‘Hello world’
|
Удалите этот код, и давайте начнем писать свой собственный.
1. Шебанг
Прежде всего, нам нужно указать, какой интерпретатор использовать для нашего кода. Наш код будет на Python, поэтому мы должны поместить это в первую строку нашего кода:
1
|
#!/usr/bin/env python
|
2. Некоторые варианты
Основной функцией нашей команды является вывод чистого пакета нашего проекта. Нам нужен способ указать, какие типы файлов следует и не следует включать в наш выходной zip-файл.
1
2
3
4
5
|
# Files to exclude
excludedFiles = [‘.*’, ‘*.psd’, ‘languages/*.mo’, ‘languages/*.po’]
# Files to include
includedFiles = [‘languages/en_US.mo’, ‘languages/en_US.po’]
|
Массив excludeFiles указывает, что в наш пакет не следует включать скрытые файлы, ресурсы Photoshop и языковые файлы. Мы включили сюда языковые файлы, так как при тестировании вашего проекта вы могли создать несколько языковых файлов, которые вы не хотите включать в окончательный пакет.
С другой стороны, массив includesFiles принудительно включает только английские (США) языковые файлы.
Вы можете расширить эти массивы, чтобы адаптировать их под свои нужды. Например, если вы используете CodeKit в своем проекте, вы можете исключить файлы настроек codekit-config.json
и config.rb
3. Переменные проекта
Прежде чем мы сможем заархивировать любой из файлов проекта, нам сначала нужно узнать, где находится наш проект TextMate. TextMate предоставляет нам некоторые существенные свойства, которые доступны в библиотеке Python os
:
01
02
03
04
05
06
07
08
09
10
|
import os
# Our project’s main directory
projDir = os.environ[‘TM_PROJECT_DIRECTORY’]
# Project name
projName = projDir[projDir.rindex(‘/’)+1:]
# Project parent directory
projParentDir = projDir[:projDir.rindex(‘/’)]
|
4. Создайте пакет Zip
Последний кусок кода должен выполнить упаковку. У самого TextMate нет возможности архивировать каталоги, но, к счастью для нас, на Mac есть встроенная утилита командной строки zip
.
Мы собираемся использовать эту команду в нашем скрипте Python:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
# Format file exclude / includes for the command line
exclude = »
for f in excludedFiles:
exclude += ‘»*/’ + f + ‘» ‘
exclude = exclude.strip()
include = »
for f in includedFiles:
include += ‘»*/’ + f + ‘» ‘
include = include.strip()
# Change directory
os.chdir(projParentDir)
# Delete existing zip file
if os.path.exists(projDir + «.zip»):
os.system(«rm » + projName + «.zip»)
# Zip it up
os.system(«zip -rq9 » + projName + «.zip » + projName + » -x » + exclude)
os.system(«zip -rq9 » + projName + «.zip » + projName + » -i » + include)
|
Свойства команды
Мы все закончили с кодом, который выполняет упаковку нашего проекта. Теперь нам нужен способ вызвать это изнутри в окне проекта. Правая панель окна Edit Bundle содержит свойства нашей команды. Там мы можем назначить сочетание клавиш для этой команды, а также изменить некоторые другие варианты поведения нашей команды. Установите эти свойства в правой панели:
- Ключ Эквивалентный
option
+command
+shift
+s
- Вход в Ничто
- Вывод для отображения в подсказке
Попробуйте это
Сохраните ваши изменения ( Файл> Сохранить ) и закройте окно редактора Bundle .
Теперь, когда вы хотите упаковать свой проект для развертывания, вы можете просто использовать сочетание клавиш + command
+ shift
+ s
. Вы также можете получить доступ к команде пакета, перейдя к ней из строки меню в разделе Bundles .
Вывод
В этой статье мы узнали о более быстром способе создания окончательного zip-файла для вашего проекта WordPress путем создания собственного пакета TextMate. Надеюсь, вы можете использовать это в своем рабочем процессе разработки, чтобы сэкономить ваше время.
Я надеюсь, вам понравилась эта статья. Я высоко ценю любые отзывы, комментарии и предложения.
Будете ли вы использовать этот метод в своем рабочем процессе кодирования? Поделитесь своими мыслями ниже!