@nomadmystic/wordpress-scaffold-cli
v0.8.6
Published
This project is created to speed up WordPress development
Downloads
6
Readme
WordPress Scaffold CLI
Installation
$ npm i -g @nomadmystic/wordpress-scaffold-cli
NOTE: This packages uses node version >=18.xCommands
Help:
$ wps --helpInitialize Project
$ wps --pi
$ wps --project-initUses the WP-CLI to download the core files, creates the config needed for DB if specified, scaffolds internal files/folders, generates/updates JSON configs, adds common development files, installs the core DB and admin user, and initializes a git repo if not one already.
- User Prompts:
Project Name (String), Namespace of your WordPress site, used in namespacing PHP classesDatabase Setup (Boolean), Asks if you have setup a local DB for the site (NOTE: WILL OVERWRITE DB at the moment)Database Name (String), DB nameDatabase Password (String), DB passwordDatabase Username (String), DB Username
Site Title (String), Used inwp core installcommandSite Admin User (String), Admin user for the siteAdmin Email (String), Admin emailSite Admin Password (String), Admin password for the siteSite Url (String), Production URL for your siteDev Site Url (String), Development URL for your site
$ ws-scaffold-plugin (Future Release)
Initialize Theme
$ wps --t
$ wps --theme- User Prompts:
Project Name (String), Namespace of your WordPress site, used in namespacing PHP classesTheme Name (String), Name of your themeTheme Description (String), Description for your themeFrontEnd Framework (Array['None', 'Vue.js 3']), Choose if you want Vue.js added to your projectSite Url (String), Production URL for your siteDev Site Url (String), Development URL for your site
Bootstrap Class and hook reflection
In both the plugin and theme scaffolding I include a BootstrapClasses class which auto instantiates classes it finds in the composer.json psr-4 namespaces object.
This uses reflection to hook directly into the WordPress hook system.
Doc Properties:
@add_action
@add_filter
@priority (optional, defaults to 10)Examples:
Filter:
/**
* @description This filters the content
* @add_filter the_content
*
* @param string $content
* @return string
*/
public function some_filter_method(string $content): string
{
// Do something with content
return $content;
}Action:
/**
* @description This enqueues scripts
* @add_action wp_enqueue_scripts
*
* @return void
*/
public function some_action_method(): void
{
// Enqueue some scripts
}Action with Priority:
/**
* @description This enqueues scripts
* @add_action wp_enqueue_scripts
* @priority 100
*
* @return void
*/
public function some_action_method(): void
{
// Enqueue some scripts
}Setup
Create WordPress Project
User will need to take care of setting up hosts and DNS. Not going to scaffold this because of
varying local setups. i.e. apache/Nginx bare-metal, Docker e.t.cDB Setup
$ sudo mysql
$ CREATE DATABASE <DATABSE_NAME>;
$ GRANT ALL PRIVILEGES ON <DATABSE_NAME>.* TO "<DATABASE_USER>"@"localhost" IDENTIFIED BY "<DATABASE_PASSWORD>";
$ FLUSH PRIVILEGES;
$ EXIT;Project Setup
$ mkdir <YOUR_PROJECT_NAME>
$ cd <YOUR_PROJECT_NAME>
$ wps --project-initTheme Setup
$ cd <YOUR_PROJECT_NAME>
$ wps --themeDevelopment
Initial Setup
$ git clone [email protected]:nomad-mystic/wordpress-scaffold-cli.git ./scaffold-cli
$ cd scaffold-cli
$ nvm use
$ npm i
$ npm run dev:tsc | npm run dev | npm run production:build Local dev commands
$ npm run dev:wps -- --version
$ npm run dev:wps -- --help
$ npm run dev:wps -- --project-init
$ npm run dev:wps -- --theme
$ npm run dev:wps -- --pluginPackage Testing
$ npm pack ./ --pack-destination="<PATH_TO_FOLDER>"
$ cd <PATH_TO_FOLDER>
$ npm i -g <PACKAGE_NAME>
$ cd <YOUR_PROJECT_NAME>
$ wps --help
$ wps --versionFor testing this package in a non-WordPress root folder copy ./env.example to ./.env and update values
Resources
- https://wordpress.org/support/article/creating-database-for-wordpress/
- https://wp-cli.org/
- https://getcomposer.org/doc/
- https://vuejs.org/
- https://sass-lang.com/
- https://webpack.js.org/
- https://github.com/nvm-sh/nvm
