From 54b3bad2d232e380678cfbd7c5b32f4e93319f39 Mon Sep 17 00:00:00 2001 From: Willy Brauner Date: Wed, 7 Feb 2024 14:05:25 +0100 Subject: [PATCH] Remove scaffold-wp --- cli/tasks/scaffold-wp/builders/block.js | 154 ------------------ cli/tasks/scaffold-wp/builders/option-page.js | 91 ----------- cli/tasks/scaffold-wp/builders/page.js | 107 ------------ cli/tasks/scaffold-wp/builders/post-type.js | 127 --------------- cli/tasks/scaffold-wp/scaffold-wp.js | 64 -------- .../block/BlockController.php.template | 18 -- .../templates/block/setup.php.template | 17 -- .../option-page/PageOption.php.template | 12 -- .../PageRestController.php.template | 42 ----- .../templates/option-page/setup.php.template | 9 - .../pages/PageRestController.php.template | 32 ---- .../pages/page-template.php.template | 7 - .../templates/pages/setup.php.template | 11 -- .../templates/post-type/PostType.php.template | 48 ------ .../PostTypeRestController.php.template | 24 --- .../templates/post-type/setup.php.template | 15 -- package.json | 1 - 17 files changed, 779 deletions(-) delete mode 100644 cli/tasks/scaffold-wp/builders/block.js delete mode 100644 cli/tasks/scaffold-wp/builders/option-page.js delete mode 100644 cli/tasks/scaffold-wp/builders/page.js delete mode 100644 cli/tasks/scaffold-wp/builders/post-type.js delete mode 100644 cli/tasks/scaffold-wp/scaffold-wp.js delete mode 100644 cli/tasks/scaffold-wp/templates/block/BlockController.php.template delete mode 100644 cli/tasks/scaffold-wp/templates/block/setup.php.template delete mode 100644 cli/tasks/scaffold-wp/templates/option-page/PageOption.php.template delete mode 100644 cli/tasks/scaffold-wp/templates/option-page/PageRestController.php.template delete mode 100644 cli/tasks/scaffold-wp/templates/option-page/setup.php.template delete mode 100644 cli/tasks/scaffold-wp/templates/pages/PageRestController.php.template delete mode 100644 cli/tasks/scaffold-wp/templates/pages/page-template.php.template delete mode 100644 cli/tasks/scaffold-wp/templates/pages/setup.php.template delete mode 100644 cli/tasks/scaffold-wp/templates/post-type/PostType.php.template delete mode 100644 cli/tasks/scaffold-wp/templates/post-type/PostTypeRestController.php.template delete mode 100644 cli/tasks/scaffold-wp/templates/post-type/setup.php.template diff --git a/cli/tasks/scaffold-wp/builders/block.js b/cli/tasks/scaffold-wp/builders/block.js deleted file mode 100644 index 1850ecb5..00000000 --- a/cli/tasks/scaffold-wp/builders/block.js +++ /dev/null @@ -1,154 +0,0 @@ -import logs from "../../../helpers/logger.js" -import config from "../../../config.js" -import Inquirer from "inquirer" -import * as changeCase from "change-case" -import * as mfs from "@cher-ami/mfs" -import createFile from "../../../helpers/create-file.js" - -const _askBlockName = () => { - return Inquirer.prompt([ - { - type: "input", - message: "Block name (dashed lower cased)?", - name: "blockName", - }, - { - type: "input", - message: "Block title? ", - name: "blockTitle", - }, - ]) -} - -/** - * WP Block Builder - * @param blockPath, - * @param blockName, - * @param blockTitle, - * @private - */ -const _blockBuilder = async ({ blockPath, blockName, blockTitle }) => { - // choose between page and postType type - const camelCaseBlockName = changeCase.camelCase(blockName), - upperCaseBlockName = changeCase.constantCase(blockName), - pascalCaseBlockName = changeCase.pascalCase(blockName) - - // scaffold postType file - await createFile({ - templateFilePath: `${config.wpTemplatesPath}/block/setup.php.template`, - destinationFilePath: `${blockPath}/setup.php`, - replaceExpressions: { - blockName, - blockTitle, - pascalCaseBlockName, - upperCaseBlockName, - }, - }) - - // scaffold controller - await createFile({ - templateFilePath: `${config.wpTemplatesPath}/block/blockController.php.template`, - destinationFilePath: `${blockPath}/${pascalCaseBlockName}Controller.php`, - replaceExpressions: { pascalCaseBlockName, camelCaseBlockName, upperCaseBlockName }, - }) -} - -const buildBlock = async () => { - return new Promise(async (resolve) => { - let wpFolder = `${config.wpTheme}/block` - - // Get block name - let blockName = "", - blockTitle = "" - await _askBlockName().then((answer) => { - blockName = changeCase.kebabCase(answer.blockName) - blockTitle = answer.blockTitle - }) - - let pascalBlockName = changeCase.pascalCase(blockName) - - // Base path of the page (no extension at the end here) - let blockPath = `${wpFolder}/${pascalBlockName}` - logs.note(`Block ${pascalBlockName} will be created here: ${blockPath}`) - - /** - * Build block - */ - try { - await _blockBuilder({ - blockPath, - blockName, - blockTitle, - }) - } catch (e) { - logs.error(e) - } - - await buildBlockType() - - // final log - logs.done("Block created.") - resolve() - }) -} - -/** - * Create atoms less to JS template - */ -const _blockTypeTemplate = ( - blockTypeList, - pFileTabRegex = new RegExp(`(\n${"\t\t\t"})`, "gmi") -) => { - // get output file name without extensions - return ` { - return `'acf/g-${block.name}',` - }) - .join("\n")} -); - -class BlockTypes{ -${blockTypeList - .map((block) => { - return ` public const ${block.upperCaseBlockName} = 'acf/g-${block.name}';` - }) - .join("\n")} - -}`.replace(pFileTabRegex, "\n") -} - -const buildBlockType = async () => { - return new Promise(async (resolve) => { - const generatedFilePath = `${config.wpTheme}/block/BlockType.php` - - const blockFolderContent = await mfs.readDir(`${config.wpTheme}/block/`, false) - const blockFolder = blockFolderContent.filter(async (e) => await mfs.dirExists(e)) - - const formatedBlocks = blockFolder.map((block) => { - const blockName = block.substring(block.lastIndexOf("/") + 1) - return { - name: changeCase.kebabCase(blockName), - upperCaseBlockName: changeCase.constantCase(blockName), - pasclaCaseName: blockName, - } - }) - - const blockTypeFile = _blockTypeTemplate(formatedBlocks) - await mfs.createFile(generatedFilePath, blockTypeFile) - - logs.done("Block Types file updated.") - resolve() - }) -} - -export default buildBlock diff --git a/cli/tasks/scaffold-wp/builders/option-page.js b/cli/tasks/scaffold-wp/builders/option-page.js deleted file mode 100644 index 255e244d..00000000 --- a/cli/tasks/scaffold-wp/builders/option-page.js +++ /dev/null @@ -1,91 +0,0 @@ -import logs from "../../../helpers/logger.js" -import config from "../../../config.js" -import createFile from "../../../helpers/create-file.js" -import Inquirer from "inquirer" -import * as changeCase from "change-case" - -const _askOptionName = () => { - return Inquirer.prompt([ - { - type: "input", - message: "Option page name (dashed lower cased)?", - name: "pageName", - }, - { - type: "input", - message: "Option page title? ", - name: "pageTitle", - }, - ]) -} - -/** - * WP Option Page Builder - * @param pagePath, - * @param pageName, - * @private - */ -const _optionPageBuilder = async ({ pagePath, pageName, pageTitle }) => { - // choose between page and page type - const pascalCasePageName = changeCase.pascalCase(pageName) - - // scaffold controller - await createFile({ - templateFilePath: `${config.wpTemplatesPath}/option-page/PageOption.php.template`, - destinationFilePath: `${pagePath}/${pascalCasePageName}Option.php`, - replaceExpressions: { pageName, pageTitle }, - }) - - // scaffold controller - await createFile({ - templateFilePath: `${config.wpTemplatesPath}/option-page/PageRestController.php.template`, - destinationFilePath: `${pagePath}/${pascalCasePageName}RestController.php`, - replaceExpressions: { pageName, pascalCasePageName }, - }) - - // scaffold setup - await createFile({ - templateFilePath: `${config.wpTemplatesPath}/option-page/setup.php.template`, - destinationFilePath: `${pagePath}/setup.php`, - replaceExpressions: { pascalCasePageName }, - }) -} - -const buildOptionPage = () => { - return new Promise(async (resolve) => { - let optionPageFolder = `${config.wpTheme}/optionPage` - - // Get page name - let pageName = "", - pageTitle = "" - await _askOptionName().then((answer) => { - pageName = changeCase.kebabCase(answer.pageName) - pageTitle = answer.pageTitle - }) - - let upperPageName = changeCase.pascalCase(pageName) - - // Base path of the page (no extension at the end here) - let pagePath = `${optionPageFolder}/${upperPageName}` - logs.note(`Option Page ${upperPageName} will be created here: ${pagePath}`) - - /** - * Build page - */ - try { - await _optionPageBuilder({ - pagePath, - pageName, - pageTitle, - }) - } catch (e) { - console.log(e) - } - - // final log - logs.done("Option Page created.") - resolve() - }) -} - -export default buildOptionPage diff --git a/cli/tasks/scaffold-wp/builders/page.js b/cli/tasks/scaffold-wp/builders/page.js deleted file mode 100644 index d7faa21c..00000000 --- a/cli/tasks/scaffold-wp/builders/page.js +++ /dev/null @@ -1,107 +0,0 @@ -import logs from "../../../helpers/logger.js" -import config from "../../../config.js" -import Inquirer from "inquirer" -import * as changeCase from "change-case" -import createFile from "../../../helpers/create-file.js" - -const _askPageName = () => { - return Inquirer.prompt([ - { - type: "input", - message: "Page name (dashed lower cased) ?", - name: "pageName", - }, - ]) -} - -const _askIfTemplate = () => { - return Inquirer.prompt([ - { - type: "confirm", - message: "Create a template for this page ?", - name: "createTemplate", - }, - ]) -} - -/** - * WP Page Builder - * @param pagePath, - * @param pageName, - - * @private - */ -const _pageBuilder = async ({ pagePath, pageName, createTemplate }) => { - // choose between page and page type - const camelCasePageName = changeCase.camelCase(pageName), - pascalCasePageName = changeCase.pascalCase(pageName) - - // scaffold controller - await createFile({ - templateFilePath: `${config.wpTemplatesPath}/pages/PageRestController.php.template`, - destinationFilePath: `${pagePath}/${pascalCasePageName}RestController.php`, - replaceExpressions: { pageName, pascalCasePageName }, - }) - - // scaffold setup - await createFile({ - templateFilePath: `${config.wpTemplatesPath}/pages/setup.php.template`, - destinationFilePath: `${pagePath}/setup.php`, - replaceExpressions: { camelCasePageName, pascalCasePageName }, - }) - - if(createTemplate) { - // template setup - await createFile({ - templateFilePath: `${config.wpTemplatesPath}/pages/page-template.php.template`, - destinationFilePath: `${config.wpTheme}/template-${pascalCasePageName}.php`, - replaceExpressions: { camelCasePageName, pascalCasePageName }, - }) - } -} - -const buildPage = () => { - return new Promise(async (resolve) => { - let pageFolder = `${config.wpTheme}/pages` - let rootFolder = `${config.wpTheme}` - - // Get page name - let pageName = "" - let createTemplate; - - await _askPageName().then((answer) => { - pageName = changeCase.kebabCase(answer.pageName) - }) - - await _askIfTemplate().then((answer) => { - createTemplate = answer.createTemplate - }) - - let upperPageName = changeCase.pascalCase(pageName) - - // Base path of the page (no extension at the end here) - let pagePath = `${pageFolder}/${upperPageName}` - logs.note(`Page ${upperPageName} will be created here: ${pagePath}`) - - if (createTemplate) logs.note(`Template will be created here: ${rootFolder}`) - - /** - * Build page - */ - try { - await _pageBuilder({ - pagePath, - pageName, - createTemplate - }) - } catch (e) { - logs.error(e) - } - - // final log - createTemplate ? logs.done("Page and template created.") : logs.done("Page created.") - resolve() - }) -} - -export default buildPage diff --git a/cli/tasks/scaffold-wp/builders/post-type.js b/cli/tasks/scaffold-wp/builders/post-type.js deleted file mode 100644 index 073ec3f3..00000000 --- a/cli/tasks/scaffold-wp/builders/post-type.js +++ /dev/null @@ -1,127 +0,0 @@ -import logs from "../../../helpers/logger.js" -import config from "../../../config.js" -import Inquirer from "inquirer" -import * as changeCase from "change-case" -import createFile from "../../../helpers/create-file.js" - -const _askPostTypeName = () => { - return Inquirer.prompt([ - { - type: "input", - message: "Post type? (dashed lower cased)", - name: "postTypeName", - }, - { - type: "input", - message: "Singular display name? ", - name: "upperSingularPostTypeName", - }, - { - type: "input", - message: "Plural display name? ", - name: "upperPluralPostTypeName", - }, - ]) -} - -/** - * WP PostType Builder - * @param postTypePath, - * @param postTypeName, - * @param upperPostTypeName, - * @param upperPluralPostTypeName, - * @param upperSingularPostTypeName, - * @private - */ -const _postTypeBuilder = async ({ - postTypePath, - postTypeName, - upperPluralPostTypeName, - upperSingularPostTypeName, -}) => { - // choose between page and postType type - const camelCasePostTypeName = changeCase.camelCase(postTypeName), - pascalCasePostType = changeCase.pascalCase(postTypeName), - upperCasePostTypeName = changeCase.constantCase(postTypeName) - - // scaffold postType file - await createFile({ - templateFilePath: `${config.wpTemplatesPath}/post-type/PostType.php.template`, - destinationFilePath: `${postTypePath}/${pascalCasePostType}.php`, - replaceExpressions: { - postTypeName, - camelCasePostTypeName, - upperPluralPostTypeName, - upperSingularPostTypeName, - upperCasePostTypeName, - }, - }) - // scaffold controller - await createFile({ - templateFilePath: `${config.wpTemplatesPath}/post-type/PostTypeRestController.php.template`, - destinationFilePath: `${postTypePath}/${pascalCasePostType}RestController.php`, - replaceExpressions: { - postTypeName, - pascalCasePostType, - camelCasePostTypeName, - upperCasePostTypeName, - }, - }) - - // scaffold setup - await createFile({ - templateFilePath: `${config.wpTemplatesPath}/post-type/setup.php.template`, - destinationFilePath: `${postTypePath}/setup.php`, - replaceExpressions: { - postTypeName, - camelCasePostTypeName, - pascalCasePostType, - upperCasePostTypeName, - }, - }) -} - -const buildPostType = async () => { - return new Promise(async (resolve) => { - /** - * Ask questions - */ - let postTypeFolder = `${config.wpTheme}/postType` - - // Get postType name - let postTypeName = "", - upperSingularPostTypeName = "", - upperPluralPostTypeName = "" - await _askPostTypeName().then((answer) => { - postTypeName = changeCase.kebabCase(answer.postTypeName) - upperSingularPostTypeName = answer.upperSingularPostTypeName - upperPluralPostTypeName = answer.upperPluralPostTypeName - }) - - let upperPostTypeName = changeCase.pascalCase(postTypeName) - - // Base path of the postType (no extension at the end here) - let postTypePath = `${postTypeFolder}/${upperPostTypeName}` - logs.note(`Page ${upperPostTypeName} will be created here: ${postTypePath}`) - - /** - * Build postType - */ - try { - await _postTypeBuilder({ - postTypePath, - postTypeName, - upperSingularPostTypeName, - upperPluralPostTypeName, - }) - } catch (e) { - logs.error(e) - } - - // final log - logs.done("PostType created.") - resolve() - }) -} - -export default buildPostType diff --git a/cli/tasks/scaffold-wp/scaffold-wp.js b/cli/tasks/scaffold-wp/scaffold-wp.js deleted file mode 100644 index 4c802cb8..00000000 --- a/cli/tasks/scaffold-wp/scaffold-wp.js +++ /dev/null @@ -1,64 +0,0 @@ -import Inquirer from "inquirer" -import logs from "../../helpers/logger.js" -import config from "../../config.js" -import buildPostType from "./builders/post-type.js" -import buildPage from "./builders/page.js" -import buildOptionPage from "./builders/option-page.js" -import buildBlock from "./builders/block.js" - -/** - * Ask bundle Type to - */ -const _scaffolders = [ - { - name: "Post Type", - exec: buildPostType, - }, - { - name: "Page", - exec: buildPage, - }, - { - name: "Option Page", - exec: buildOptionPage, - }, - { - name: "Block", - exec: buildBlock, - }, -] - -// ----------------------–----------------------–----------------------–-------- PUBLIC - -const wpScaffold = () => { - new Promise((resolve) => { - // Get scaffolder to present listing to user - let scaffolderTypes = _scaffolders.map((scaffolder) => scaffolder.name) - - if (!config.wpTheme) { - logs.error(`WP path not defined in global.paths`) - console.log( - `Add \n\n ${` /**\n * wp\n */\n wpTemplatesPath: root.resolve("config/tasks/wp-scaffold/component/templates"), \n wpTheme: root.resolve("dist/api/web/app/themes/CherAmi"),`} \n\nto ${`global.paths.js`}` - ) - return - } - - // List available scaffolders to user - Inquirer.prompt({ - type: "list", - name: "type", - message: "What kind of component to create?", - choices: scaffolderTypes, - pageSize: 20, - }).then(async (answer) => { - // Get scaffolder index - const scaffolderIndex = scaffolderTypes.indexOf(answer.type) - - // Start this scaffolder - await _scaffolders[scaffolderIndex].exec() - resolve() - }) - }) -} - -wpScaffold() diff --git a/cli/tasks/scaffold-wp/templates/block/BlockController.php.template b/cli/tasks/scaffold-wp/templates/block/BlockController.php.template deleted file mode 100644 index fa703cfe..00000000 --- a/cli/tasks/scaffold-wp/templates/block/BlockController.php.template +++ /dev/null @@ -1,18 +0,0 @@ - self::BLOCK_NAME, - "blockData" => null - ]; - } - -} diff --git a/cli/tasks/scaffold-wp/templates/block/setup.php.template b/cli/tasks/scaffold-wp/templates/block/setup.php.template deleted file mode 100644 index c2b0a9ee..00000000 --- a/cli/tasks/scaffold-wp/templates/block/setup.php.template +++ /dev/null @@ -1,17 +0,0 @@ - 'g-%%blockName%%', - 'title' => __('%%blockTitle%%'), - 'description' => __('%%blockTitle%%'), - 'render_callback' => 'gutenberg_render', - 'category' => 'formatting', - 'mode' => 'edit', - 'keywords' => array('%%blockTitle%%'), - )); - -endif; diff --git a/cli/tasks/scaffold-wp/templates/option-page/PageOption.php.template b/cli/tasks/scaffold-wp/templates/option-page/PageOption.php.template deleted file mode 100644 index afa8a19a..00000000 --- a/cli/tasks/scaffold-wp/templates/option-page/PageOption.php.template +++ /dev/null @@ -1,12 +0,0 @@ - __('%%pageTitle%%'), - 'menu_title' => __('%%pageTitle%%'), - 'menu_slug' => '%%pageName%%', - 'capability' => 'edit_posts', - 'redirect' => false, - 'position' => 20 - )); -} \ No newline at end of file diff --git a/cli/tasks/scaffold-wp/templates/option-page/PageRestController.php.template b/cli/tasks/scaffold-wp/templates/option-page/PageRestController.php.template deleted file mode 100644 index 1f831ff1..00000000 --- a/cli/tasks/scaffold-wp/templates/option-page/PageRestController.php.template +++ /dev/null @@ -1,42 +0,0 @@ -namespace . '/v' . $this->version, - '/%%pageName%%', - array( - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array($this, 'get_option_page'), - 'permission_callback' => '__return_true' - ) - ) - ); - - } - - public function get_option_page(\WP_REST_Request $request):WP_REST_Response{ - try{ - - return $this->successResponse([]); - }catch(\Exception $e){ - return $this->failResponse($e->getMessage()); - } - } - - public function format($post){ - $data = []; - - return $data; - } - - -} \ No newline at end of file diff --git a/cli/tasks/scaffold-wp/templates/option-page/setup.php.template b/cli/tasks/scaffold-wp/templates/option-page/setup.php.template deleted file mode 100644 index 23d5f3b8..00000000 --- a/cli/tasks/scaffold-wp/templates/option-page/setup.php.template +++ /dev/null @@ -1,9 +0,0 @@ -register_routes(); -}); diff --git a/cli/tasks/scaffold-wp/templates/pages/PageRestController.php.template b/cli/tasks/scaffold-wp/templates/pages/PageRestController.php.template deleted file mode 100644 index 57b49cec..00000000 --- a/cli/tasks/scaffold-wp/templates/pages/PageRestController.php.template +++ /dev/null @@ -1,32 +0,0 @@ -namespace . '/v' . $this->version, - self::$basePath . self::$pageSlug, - array( - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array($this, 'get_page'), - 'permission_callback' => '__return_true' - ) - ) - ); - } - - public static function format($post): ?array { - return FormatHelper::formatGroup(get_fields($post->ID)); - } -} \ No newline at end of file diff --git a/cli/tasks/scaffold-wp/templates/pages/page-template.php.template b/cli/tasks/scaffold-wp/templates/pages/page-template.php.template deleted file mode 100644 index 0a858a41..00000000 --- a/cli/tasks/scaffold-wp/templates/pages/page-template.php.template +++ /dev/null @@ -1,7 +0,0 @@ -register_routes(); -}); diff --git a/cli/tasks/scaffold-wp/templates/post-type/PostType.php.template b/cli/tasks/scaffold-wp/templates/post-type/PostType.php.template deleted file mode 100644 index 0c57f8bb..00000000 --- a/cli/tasks/scaffold-wp/templates/post-type/PostType.php.template +++ /dev/null @@ -1,48 +0,0 @@ - _x( '%%upperPluralPostTypeName%%', 'Post type general name', '%%postTypeName%%' ), - 'singular_name' => _x( '%%upperSingularPostTypeName%%', 'Post type singular name', '%%postTypeName%%' ), - 'menu_name' => _x( '%%upperPluralPostTypeName%%', 'Admin Menu text', '%%postTypeName%%' ), - 'name_admin_bar' => _x( '%%upperPluralPostTypeName%%', 'Add on Toolbar', '%%postTypeName%%' ), - 'add_new' => __( 'Ajouter', '%%postTypeName%%' ), - 'add_new_item' => __( 'Ajouter un nouvel %%upperPluralPostTypeName%%', '%%postTypeName%%' ), - 'new_item' => __( 'Nouvel %%upperPluralPostTypeName%%', '%%postTypeName%%' ), - 'edit_item' => __( 'Editer le %%upperPluralPostTypeName%%', '%%postTypeName%%' ), - 'view_item' => __( 'Voir le %%upperPluralPostTypeName%%', '%%postTypeName%%' ), - 'all_items' => __( 'Tous les %%upperPluralPostTypeName%%', '%%postTypeName%%' ), - 'search_items' => __( 'Rechercher un %%upperPluralPostTypeName%%', '%%postTypeName%%' ), - ); - - $args = array( - 'label' => '%%upperPluralPostTypeName%%', - 'description' => '%%upperPluralPostTypeName%%', - 'supports' => array('title', 'thumbnail', 'page-attributes'), - 'labels' => $labels, - 'hierarchical' => true, - 'public' => true, - 'show_ui' => true, - 'show_in_menu' => true, - 'menu_position' => 7, - 'menu_icon' => 'dashicons-welcome-write-blog', - 'show_in_admin_bar' => true, - 'show_in_nav_menus' => true, - 'show_in_rest' => true, - 'can_export' => true, - 'has_archive' => true, - 'exclude_from_search' => false, - 'publicly_queryable' => true, - 'capability_type' => 'post', - 'rewrite' => true - ); - - register_post_type(POST_TYPE_%%upperCasePostTypeName%%, $args); - -}, 11); - diff --git a/cli/tasks/scaffold-wp/templates/post-type/PostTypeRestController.php.template b/cli/tasks/scaffold-wp/templates/post-type/PostTypeRestController.php.template deleted file mode 100644 index 2bc07b40..00000000 --- a/cli/tasks/scaffold-wp/templates/post-type/PostTypeRestController.php.template +++ /dev/null @@ -1,24 +0,0 @@ -register_routes(); -}); diff --git a/package.json b/package.json index 7fac7449..2566f499 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,6 @@ "front:build": "cd apps/front && npm run build", "front:test": "cd apps/front && npm run test", "front:scaffold": "node cli/tasks/scaffold-component/scaffold-component.js", - "back:scaffold-wp": "node cli/tasks/scaffold-wp/scaffold-wp.js", "setup": "node cli/tasks/setup/setup.js && npm run prepare", "prepare": "husky install", "postinstall": "cd apps/front && npm i"