I found out that the easiest way to build a WordPress plugin is using a rake
task. In fact, you can use Rake::PackageTask
to create a zip file. However, there is very little documentation about how to do it in practice. Here is my solution.
- (destroy and) create a folder to hold just the needed files
- copy the (possibly transformed) needed files to that folder
- compress the folder
Here is my Rakefile:
require 'rake/packagetask'
namespace :nzymes do
desc 'Build plugin'
task build: %w(destroy create package)
desc 'Destroy dist folder and its contents'
task :destroy do
rm_rf 'dist'
end
desc 'Create dist folder and its contents'
task :create do
mkdir_p 'dist/nzymes/vendor'
cp_r 'vendor/Ando', 'dist/nzymes/vendor'
cp_r 'src', 'dist/nzymes'
cp_r Dir.glob('*.php'), 'dist/nzymes'
cp_r Dir.glob('*.md'), 'dist/nzymes'
cp_r 'readme.txt', 'dist/nzymes'
end
Rake::PackageTask.new('nzymes', :noversion) do |p|
p.need_zip = true
p.package_dir = 'dist'
end
end
Here are the tasks it creates:
andrea at Lock-and-Stock in ~/dev/wordpress/plugins/nzymes on master [!?$]
$ rake --tasks
rake nzymes:build # Build plugin
rake nzymes:clobber_package # Remove package products
rake nzymes:create # Create dist folder and its contents
rake nzymes:destroy # Destroy dist folder and its contents
rake nzymes:package # Build all the packages
rake nzymes:repackage # Force a rebuild of the package files
Here is how you can use it:
andrea at Lock-and-Stock in ~/dev/wordpress/plugins/nzymes on master [!?$]
$ rake nzymes:build
rm -rf dist
mkdir -p dist/nzymes/vendor
cp -r vendor/Ando dist/nzymes/vendor
cp -r src dist/nzymes
cp -r nzymes.php dist/nzymes
cp -r nzymes-manual.md README.md dist/nzymes
cp -r readme.txt dist/nzymes
cd dist
zip -r nzymes.zip nzymes
adding: nzymes/ (stored 0%)
adding: nzymes/nzymes-manual.md (deflated 70%)
adding: nzymes/nzymes.php (deflated 46%)
adding: nzymes/README.md (deflated 48%)
adding: nzymes/readme.txt (deflated 53%)
adding: nzymes/src/ (stored 0%)
adding: nzymes/src/Nzymes/ (stored 0%)
adding: nzymes/src/Nzymes/Capabilities.php (deflated 84%)
adding: nzymes/src/Nzymes/Engine.php (deflated 80%)
adding: nzymes/src/Nzymes/Options.php (deflated 73%)
adding: nzymes/src/Nzymes/Plugin.php (deflated 74%)
adding: nzymes/src/Nzymes/Stack.php (deflated 70%)
adding: nzymes/src/Nzymes/Unused.php (deflated 69%)
adding: nzymes/vendor/ (stored 0%)
adding: nzymes/vendor/Ando/ (stored 0%)
adding: nzymes/vendor/Ando/ErrorFactory.php (deflated 79%)
adding: nzymes/vendor/Ando/Exception.php (deflated 29%)
adding: nzymes/vendor/Ando/Regex.php (deflated 78%)
adding: nzymes/vendor/Ando/StarFunc.php (deflated 73%)
cd -
Here is what you get:
andrea at Lock-and-Stock in ~/dev/wordpress/plugins/nzymes on master [$]
$ ls -la dist
total 104
drwxr-xr-x 4 andrea staff 136 May 25 13:03 .
drwxr-xr-x@ 20 andrea staff 680 May 25 13:03 ..
drwxr-xr-x 8 andrea staff 272 May 25 13:03 nzymes
-rw-r--r-- 1 andrea staff 50814 May 25 13:03 nzymes.zip