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