From de4579b25e62f01d1f76f903d979930752c36bf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20No=C3=ABl?= Date: Wed, 15 Sep 2021 16:41:36 +0200 Subject: [PATCH 1/3] change project structure to use /src folder --- examples/getstarted/config/plugins.js | 2 +- examples/getstarted/{ => src}/admin/app.js | 0 .../getstarted/{ => src}/admin/webpack.config.js | 0 .../address/content-types/address/schema.json | 0 .../getstarted/{ => src}/api/address/index.js | 0 .../{ => src}/api/address/policies/address.js | 0 .../{ => src}/api/address/routes/address.js | 0 .../category/content-types/category/schema.json | 0 .../{ => src}/api/category/routes/category.js | 0 .../country/content-types/country/schema.json | 0 .../{ => src}/api/country/routes/country.js | 0 .../homepage/content-types/homepage/schema.json | 0 .../{ => src}/api/homepage/routes/homepage.js | 0 .../content-types/kitchensink/schema.json | 0 .../api/kitchensink/routes/kitchensink.js | 0 .../api/like/content-types/like/schema.json | 0 .../getstarted/{ => src}/api/like/routes/like.js | 0 .../api/menu/content-types/menu/schema.json | 0 .../getstarted/{ => src}/api/menu/routes/menu.js | 0 .../content-types/menusection/schema.json | 0 .../api/menusection/routes/menusection.js | 0 .../content-types/restaurant/lifecycles.js | 0 .../content-types/restaurant/schema.json | 0 .../api/restaurant/routes/restaurant.js | 0 .../api/review/content-types/review/schema.json | 0 .../{ => src}/api/review/routes/review.js | 0 .../api/tag/content-types/tag/schema.json | 0 .../getstarted/{ => src}/api/tag/routes/tag.js | 0 .../{ => src}/components/basic/simple.json | 0 .../{ => src}/components/blog/test-como.json | 0 .../components/default/closingperiod.json | 0 .../{ => src}/components/default/dish.json | 0 .../components/default/openingtimes.json | 0 .../components/default/restaurantservice.json | 0 .../content-types/user/schema.json | 0 .../users-permissions/strapi-server.js | 0 .../{ => src}/middlewares/testM/defaults.json | 0 .../{ => src}/middlewares/testM/index.js | 0 .../plugins/myplugin/admin/src/index.js | 0 .../myplugin/admin/src/pages/App/index.js | 0 .../plugins/myplugin/admin/src/pluginId.js | 0 .../myplugin/admin/src/translations/en.json | 0 .../plugins/myplugin/admin/src/utils/getTrad.js | 0 .../{ => src}/plugins/myplugin/package.json | 0 .../plugins/myplugin/server/config/index.js | 0 .../myplugin/server/content-types/index.js | 0 .../myplugin/server/content-types/test/index.js | 0 .../server/content-types/test/schema.json | 0 .../plugins/myplugin/server/controllers/index.js | 0 .../plugins/myplugin/server/controllers/test.js | 0 .../plugins/myplugin/server/schema.graphql.js | 0 .../{ => src}/plugins/myplugin/strapi-server.js | 0 .../getstarted/{ => src}/policies/test-policy.js | 0 .../server/services/api-handler.js | 14 +++++++------- .../server/services/component-categories.js | 2 +- .../server/services/content-types.js | 7 ++++++- .../services/schema-builder/component-builder.js | 4 ++-- .../schema-builder/content-type-builder.js | 2 +- .../server/services/schema-builder/index.js | 16 +++++----------- packages/core/strapi/lib/commands/develop.js | 4 ++-- packages/core/strapi/lib/core/loaders/apis.js | 4 ++-- .../core/strapi/lib/core/loaders/components.js | 2 +- .../core/strapi/lib/core/loaders/middlewares.js | 2 +- .../strapi/lib/core/loaders/plugins/index.js | 2 +- .../core/strapi/lib/core/loaders/policies.js | 2 +- .../lib/resources/files/{ => src}/admin/app.js | 0 .../files/{ => src}/admin/webpack.config.js | 0 .../lib/resources/files/{ => src}/api/.gitkeep | 0 .../files/{ => src}/extensions/.gitkeep | 0 69 files changed, 31 insertions(+), 32 deletions(-) rename examples/getstarted/{ => src}/admin/app.js (100%) rename examples/getstarted/{ => src}/admin/webpack.config.js (100%) rename examples/getstarted/{ => src}/api/address/content-types/address/schema.json (100%) rename examples/getstarted/{ => src}/api/address/index.js (100%) rename examples/getstarted/{ => src}/api/address/policies/address.js (100%) rename examples/getstarted/{ => src}/api/address/routes/address.js (100%) rename examples/getstarted/{ => src}/api/category/content-types/category/schema.json (100%) rename examples/getstarted/{ => src}/api/category/routes/category.js (100%) rename examples/getstarted/{ => src}/api/country/content-types/country/schema.json (100%) rename examples/getstarted/{ => src}/api/country/routes/country.js (100%) rename examples/getstarted/{ => src}/api/homepage/content-types/homepage/schema.json (100%) rename examples/getstarted/{ => src}/api/homepage/routes/homepage.js (100%) rename examples/getstarted/{ => src}/api/kitchensink/content-types/kitchensink/schema.json (100%) rename examples/getstarted/{ => src}/api/kitchensink/routes/kitchensink.js (100%) rename examples/getstarted/{ => src}/api/like/content-types/like/schema.json (100%) rename examples/getstarted/{ => src}/api/like/routes/like.js (100%) rename examples/getstarted/{ => src}/api/menu/content-types/menu/schema.json (100%) rename examples/getstarted/{ => src}/api/menu/routes/menu.js (100%) rename examples/getstarted/{ => src}/api/menusection/content-types/menusection/schema.json (100%) rename examples/getstarted/{ => src}/api/menusection/routes/menusection.js (100%) rename examples/getstarted/{ => src}/api/restaurant/content-types/restaurant/lifecycles.js (100%) rename examples/getstarted/{ => src}/api/restaurant/content-types/restaurant/schema.json (100%) rename examples/getstarted/{ => src}/api/restaurant/routes/restaurant.js (100%) rename examples/getstarted/{ => src}/api/review/content-types/review/schema.json (100%) rename examples/getstarted/{ => src}/api/review/routes/review.js (100%) rename examples/getstarted/{ => src}/api/tag/content-types/tag/schema.json (100%) rename examples/getstarted/{ => src}/api/tag/routes/tag.js (100%) rename examples/getstarted/{ => src}/components/basic/simple.json (100%) rename examples/getstarted/{ => src}/components/blog/test-como.json (100%) rename examples/getstarted/{ => src}/components/default/closingperiod.json (100%) rename examples/getstarted/{ => src}/components/default/dish.json (100%) rename examples/getstarted/{ => src}/components/default/openingtimes.json (100%) rename examples/getstarted/{ => src}/components/default/restaurantservice.json (100%) rename examples/getstarted/{ => src}/extensions/users-permissions/content-types/user/schema.json (100%) rename examples/getstarted/{ => src}/extensions/users-permissions/strapi-server.js (100%) rename examples/getstarted/{ => src}/middlewares/testM/defaults.json (100%) rename examples/getstarted/{ => src}/middlewares/testM/index.js (100%) rename examples/getstarted/{ => src}/plugins/myplugin/admin/src/index.js (100%) rename examples/getstarted/{ => src}/plugins/myplugin/admin/src/pages/App/index.js (100%) rename examples/getstarted/{ => src}/plugins/myplugin/admin/src/pluginId.js (100%) rename examples/getstarted/{ => src}/plugins/myplugin/admin/src/translations/en.json (100%) rename examples/getstarted/{ => src}/plugins/myplugin/admin/src/utils/getTrad.js (100%) rename examples/getstarted/{ => src}/plugins/myplugin/package.json (100%) rename examples/getstarted/{ => src}/plugins/myplugin/server/config/index.js (100%) rename examples/getstarted/{ => src}/plugins/myplugin/server/content-types/index.js (100%) rename examples/getstarted/{ => src}/plugins/myplugin/server/content-types/test/index.js (100%) rename examples/getstarted/{ => src}/plugins/myplugin/server/content-types/test/schema.json (100%) rename examples/getstarted/{ => src}/plugins/myplugin/server/controllers/index.js (100%) rename examples/getstarted/{ => src}/plugins/myplugin/server/controllers/test.js (100%) rename examples/getstarted/{ => src}/plugins/myplugin/server/schema.graphql.js (100%) rename examples/getstarted/{ => src}/plugins/myplugin/strapi-server.js (100%) rename examples/getstarted/{ => src}/policies/test-policy.js (100%) rename packages/generators/app/lib/resources/files/{ => src}/admin/app.js (100%) rename packages/generators/app/lib/resources/files/{ => src}/admin/webpack.config.js (100%) rename packages/generators/app/lib/resources/files/{ => src}/api/.gitkeep (100%) rename packages/generators/app/lib/resources/files/{ => src}/extensions/.gitkeep (100%) diff --git a/examples/getstarted/config/plugins.js b/examples/getstarted/config/plugins.js index 5aae0b4a8e..e7713d2b54 100644 --- a/examples/getstarted/config/plugins.js +++ b/examples/getstarted/config/plugins.js @@ -15,7 +15,7 @@ module.exports = ({ env }) => ({ }, myplugin: { enabled: true, - resolve: `./plugins/myplugin`, // From the root of the project + resolve: `./src/plugins/myplugin`, // From the root of the project config: { testConf: 3, }, diff --git a/examples/getstarted/admin/app.js b/examples/getstarted/src/admin/app.js similarity index 100% rename from examples/getstarted/admin/app.js rename to examples/getstarted/src/admin/app.js diff --git a/examples/getstarted/admin/webpack.config.js b/examples/getstarted/src/admin/webpack.config.js similarity index 100% rename from examples/getstarted/admin/webpack.config.js rename to examples/getstarted/src/admin/webpack.config.js diff --git a/examples/getstarted/api/address/content-types/address/schema.json b/examples/getstarted/src/api/address/content-types/address/schema.json similarity index 100% rename from examples/getstarted/api/address/content-types/address/schema.json rename to examples/getstarted/src/api/address/content-types/address/schema.json diff --git a/examples/getstarted/api/address/index.js b/examples/getstarted/src/api/address/index.js similarity index 100% rename from examples/getstarted/api/address/index.js rename to examples/getstarted/src/api/address/index.js diff --git a/examples/getstarted/api/address/policies/address.js b/examples/getstarted/src/api/address/policies/address.js similarity index 100% rename from examples/getstarted/api/address/policies/address.js rename to examples/getstarted/src/api/address/policies/address.js diff --git a/examples/getstarted/api/address/routes/address.js b/examples/getstarted/src/api/address/routes/address.js similarity index 100% rename from examples/getstarted/api/address/routes/address.js rename to examples/getstarted/src/api/address/routes/address.js diff --git a/examples/getstarted/api/category/content-types/category/schema.json b/examples/getstarted/src/api/category/content-types/category/schema.json similarity index 100% rename from examples/getstarted/api/category/content-types/category/schema.json rename to examples/getstarted/src/api/category/content-types/category/schema.json diff --git a/examples/getstarted/api/category/routes/category.js b/examples/getstarted/src/api/category/routes/category.js similarity index 100% rename from examples/getstarted/api/category/routes/category.js rename to examples/getstarted/src/api/category/routes/category.js diff --git a/examples/getstarted/api/country/content-types/country/schema.json b/examples/getstarted/src/api/country/content-types/country/schema.json similarity index 100% rename from examples/getstarted/api/country/content-types/country/schema.json rename to examples/getstarted/src/api/country/content-types/country/schema.json diff --git a/examples/getstarted/api/country/routes/country.js b/examples/getstarted/src/api/country/routes/country.js similarity index 100% rename from examples/getstarted/api/country/routes/country.js rename to examples/getstarted/src/api/country/routes/country.js diff --git a/examples/getstarted/api/homepage/content-types/homepage/schema.json b/examples/getstarted/src/api/homepage/content-types/homepage/schema.json similarity index 100% rename from examples/getstarted/api/homepage/content-types/homepage/schema.json rename to examples/getstarted/src/api/homepage/content-types/homepage/schema.json diff --git a/examples/getstarted/api/homepage/routes/homepage.js b/examples/getstarted/src/api/homepage/routes/homepage.js similarity index 100% rename from examples/getstarted/api/homepage/routes/homepage.js rename to examples/getstarted/src/api/homepage/routes/homepage.js diff --git a/examples/getstarted/api/kitchensink/content-types/kitchensink/schema.json b/examples/getstarted/src/api/kitchensink/content-types/kitchensink/schema.json similarity index 100% rename from examples/getstarted/api/kitchensink/content-types/kitchensink/schema.json rename to examples/getstarted/src/api/kitchensink/content-types/kitchensink/schema.json diff --git a/examples/getstarted/api/kitchensink/routes/kitchensink.js b/examples/getstarted/src/api/kitchensink/routes/kitchensink.js similarity index 100% rename from examples/getstarted/api/kitchensink/routes/kitchensink.js rename to examples/getstarted/src/api/kitchensink/routes/kitchensink.js diff --git a/examples/getstarted/api/like/content-types/like/schema.json b/examples/getstarted/src/api/like/content-types/like/schema.json similarity index 100% rename from examples/getstarted/api/like/content-types/like/schema.json rename to examples/getstarted/src/api/like/content-types/like/schema.json diff --git a/examples/getstarted/api/like/routes/like.js b/examples/getstarted/src/api/like/routes/like.js similarity index 100% rename from examples/getstarted/api/like/routes/like.js rename to examples/getstarted/src/api/like/routes/like.js diff --git a/examples/getstarted/api/menu/content-types/menu/schema.json b/examples/getstarted/src/api/menu/content-types/menu/schema.json similarity index 100% rename from examples/getstarted/api/menu/content-types/menu/schema.json rename to examples/getstarted/src/api/menu/content-types/menu/schema.json diff --git a/examples/getstarted/api/menu/routes/menu.js b/examples/getstarted/src/api/menu/routes/menu.js similarity index 100% rename from examples/getstarted/api/menu/routes/menu.js rename to examples/getstarted/src/api/menu/routes/menu.js diff --git a/examples/getstarted/api/menusection/content-types/menusection/schema.json b/examples/getstarted/src/api/menusection/content-types/menusection/schema.json similarity index 100% rename from examples/getstarted/api/menusection/content-types/menusection/schema.json rename to examples/getstarted/src/api/menusection/content-types/menusection/schema.json diff --git a/examples/getstarted/api/menusection/routes/menusection.js b/examples/getstarted/src/api/menusection/routes/menusection.js similarity index 100% rename from examples/getstarted/api/menusection/routes/menusection.js rename to examples/getstarted/src/api/menusection/routes/menusection.js diff --git a/examples/getstarted/api/restaurant/content-types/restaurant/lifecycles.js b/examples/getstarted/src/api/restaurant/content-types/restaurant/lifecycles.js similarity index 100% rename from examples/getstarted/api/restaurant/content-types/restaurant/lifecycles.js rename to examples/getstarted/src/api/restaurant/content-types/restaurant/lifecycles.js diff --git a/examples/getstarted/api/restaurant/content-types/restaurant/schema.json b/examples/getstarted/src/api/restaurant/content-types/restaurant/schema.json similarity index 100% rename from examples/getstarted/api/restaurant/content-types/restaurant/schema.json rename to examples/getstarted/src/api/restaurant/content-types/restaurant/schema.json diff --git a/examples/getstarted/api/restaurant/routes/restaurant.js b/examples/getstarted/src/api/restaurant/routes/restaurant.js similarity index 100% rename from examples/getstarted/api/restaurant/routes/restaurant.js rename to examples/getstarted/src/api/restaurant/routes/restaurant.js diff --git a/examples/getstarted/api/review/content-types/review/schema.json b/examples/getstarted/src/api/review/content-types/review/schema.json similarity index 100% rename from examples/getstarted/api/review/content-types/review/schema.json rename to examples/getstarted/src/api/review/content-types/review/schema.json diff --git a/examples/getstarted/api/review/routes/review.js b/examples/getstarted/src/api/review/routes/review.js similarity index 100% rename from examples/getstarted/api/review/routes/review.js rename to examples/getstarted/src/api/review/routes/review.js diff --git a/examples/getstarted/api/tag/content-types/tag/schema.json b/examples/getstarted/src/api/tag/content-types/tag/schema.json similarity index 100% rename from examples/getstarted/api/tag/content-types/tag/schema.json rename to examples/getstarted/src/api/tag/content-types/tag/schema.json diff --git a/examples/getstarted/api/tag/routes/tag.js b/examples/getstarted/src/api/tag/routes/tag.js similarity index 100% rename from examples/getstarted/api/tag/routes/tag.js rename to examples/getstarted/src/api/tag/routes/tag.js diff --git a/examples/getstarted/components/basic/simple.json b/examples/getstarted/src/components/basic/simple.json similarity index 100% rename from examples/getstarted/components/basic/simple.json rename to examples/getstarted/src/components/basic/simple.json diff --git a/examples/getstarted/components/blog/test-como.json b/examples/getstarted/src/components/blog/test-como.json similarity index 100% rename from examples/getstarted/components/blog/test-como.json rename to examples/getstarted/src/components/blog/test-como.json diff --git a/examples/getstarted/components/default/closingperiod.json b/examples/getstarted/src/components/default/closingperiod.json similarity index 100% rename from examples/getstarted/components/default/closingperiod.json rename to examples/getstarted/src/components/default/closingperiod.json diff --git a/examples/getstarted/components/default/dish.json b/examples/getstarted/src/components/default/dish.json similarity index 100% rename from examples/getstarted/components/default/dish.json rename to examples/getstarted/src/components/default/dish.json diff --git a/examples/getstarted/components/default/openingtimes.json b/examples/getstarted/src/components/default/openingtimes.json similarity index 100% rename from examples/getstarted/components/default/openingtimes.json rename to examples/getstarted/src/components/default/openingtimes.json diff --git a/examples/getstarted/components/default/restaurantservice.json b/examples/getstarted/src/components/default/restaurantservice.json similarity index 100% rename from examples/getstarted/components/default/restaurantservice.json rename to examples/getstarted/src/components/default/restaurantservice.json diff --git a/examples/getstarted/extensions/users-permissions/content-types/user/schema.json b/examples/getstarted/src/extensions/users-permissions/content-types/user/schema.json similarity index 100% rename from examples/getstarted/extensions/users-permissions/content-types/user/schema.json rename to examples/getstarted/src/extensions/users-permissions/content-types/user/schema.json diff --git a/examples/getstarted/extensions/users-permissions/strapi-server.js b/examples/getstarted/src/extensions/users-permissions/strapi-server.js similarity index 100% rename from examples/getstarted/extensions/users-permissions/strapi-server.js rename to examples/getstarted/src/extensions/users-permissions/strapi-server.js diff --git a/examples/getstarted/middlewares/testM/defaults.json b/examples/getstarted/src/middlewares/testM/defaults.json similarity index 100% rename from examples/getstarted/middlewares/testM/defaults.json rename to examples/getstarted/src/middlewares/testM/defaults.json diff --git a/examples/getstarted/middlewares/testM/index.js b/examples/getstarted/src/middlewares/testM/index.js similarity index 100% rename from examples/getstarted/middlewares/testM/index.js rename to examples/getstarted/src/middlewares/testM/index.js diff --git a/examples/getstarted/plugins/myplugin/admin/src/index.js b/examples/getstarted/src/plugins/myplugin/admin/src/index.js similarity index 100% rename from examples/getstarted/plugins/myplugin/admin/src/index.js rename to examples/getstarted/src/plugins/myplugin/admin/src/index.js diff --git a/examples/getstarted/plugins/myplugin/admin/src/pages/App/index.js b/examples/getstarted/src/plugins/myplugin/admin/src/pages/App/index.js similarity index 100% rename from examples/getstarted/plugins/myplugin/admin/src/pages/App/index.js rename to examples/getstarted/src/plugins/myplugin/admin/src/pages/App/index.js diff --git a/examples/getstarted/plugins/myplugin/admin/src/pluginId.js b/examples/getstarted/src/plugins/myplugin/admin/src/pluginId.js similarity index 100% rename from examples/getstarted/plugins/myplugin/admin/src/pluginId.js rename to examples/getstarted/src/plugins/myplugin/admin/src/pluginId.js diff --git a/examples/getstarted/plugins/myplugin/admin/src/translations/en.json b/examples/getstarted/src/plugins/myplugin/admin/src/translations/en.json similarity index 100% rename from examples/getstarted/plugins/myplugin/admin/src/translations/en.json rename to examples/getstarted/src/plugins/myplugin/admin/src/translations/en.json diff --git a/examples/getstarted/plugins/myplugin/admin/src/utils/getTrad.js b/examples/getstarted/src/plugins/myplugin/admin/src/utils/getTrad.js similarity index 100% rename from examples/getstarted/plugins/myplugin/admin/src/utils/getTrad.js rename to examples/getstarted/src/plugins/myplugin/admin/src/utils/getTrad.js diff --git a/examples/getstarted/plugins/myplugin/package.json b/examples/getstarted/src/plugins/myplugin/package.json similarity index 100% rename from examples/getstarted/plugins/myplugin/package.json rename to examples/getstarted/src/plugins/myplugin/package.json diff --git a/examples/getstarted/plugins/myplugin/server/config/index.js b/examples/getstarted/src/plugins/myplugin/server/config/index.js similarity index 100% rename from examples/getstarted/plugins/myplugin/server/config/index.js rename to examples/getstarted/src/plugins/myplugin/server/config/index.js diff --git a/examples/getstarted/plugins/myplugin/server/content-types/index.js b/examples/getstarted/src/plugins/myplugin/server/content-types/index.js similarity index 100% rename from examples/getstarted/plugins/myplugin/server/content-types/index.js rename to examples/getstarted/src/plugins/myplugin/server/content-types/index.js diff --git a/examples/getstarted/plugins/myplugin/server/content-types/test/index.js b/examples/getstarted/src/plugins/myplugin/server/content-types/test/index.js similarity index 100% rename from examples/getstarted/plugins/myplugin/server/content-types/test/index.js rename to examples/getstarted/src/plugins/myplugin/server/content-types/test/index.js diff --git a/examples/getstarted/plugins/myplugin/server/content-types/test/schema.json b/examples/getstarted/src/plugins/myplugin/server/content-types/test/schema.json similarity index 100% rename from examples/getstarted/plugins/myplugin/server/content-types/test/schema.json rename to examples/getstarted/src/plugins/myplugin/server/content-types/test/schema.json diff --git a/examples/getstarted/plugins/myplugin/server/controllers/index.js b/examples/getstarted/src/plugins/myplugin/server/controllers/index.js similarity index 100% rename from examples/getstarted/plugins/myplugin/server/controllers/index.js rename to examples/getstarted/src/plugins/myplugin/server/controllers/index.js diff --git a/examples/getstarted/plugins/myplugin/server/controllers/test.js b/examples/getstarted/src/plugins/myplugin/server/controllers/test.js similarity index 100% rename from examples/getstarted/plugins/myplugin/server/controllers/test.js rename to examples/getstarted/src/plugins/myplugin/server/controllers/test.js diff --git a/examples/getstarted/plugins/myplugin/server/schema.graphql.js b/examples/getstarted/src/plugins/myplugin/server/schema.graphql.js similarity index 100% rename from examples/getstarted/plugins/myplugin/server/schema.graphql.js rename to examples/getstarted/src/plugins/myplugin/server/schema.graphql.js diff --git a/examples/getstarted/plugins/myplugin/strapi-server.js b/examples/getstarted/src/plugins/myplugin/strapi-server.js similarity index 100% rename from examples/getstarted/plugins/myplugin/strapi-server.js rename to examples/getstarted/src/plugins/myplugin/strapi-server.js diff --git a/examples/getstarted/policies/test-policy.js b/examples/getstarted/src/policies/test-policy.js similarity index 100% rename from examples/getstarted/policies/test-policy.js rename to examples/getstarted/src/policies/test-policy.js diff --git a/packages/core/content-type-builder/server/services/api-handler.js b/packages/core/content-type-builder/server/services/api-handler.js index ac91366020..9670281c8c 100644 --- a/packages/core/content-type-builder/server/services/api-handler.js +++ b/packages/core/content-type-builder/server/services/api-handler.js @@ -10,7 +10,7 @@ const fse = require('fs-extra'); async function clear(uid) { const { apiName, modelName } = strapi.contentTypes[uid]; - const apiFolder = path.join(strapi.dir, 'api', apiName); + const apiFolder = path.join(strapi.dir, 'src', 'api', apiName); await recursiveRemoveFiles(apiFolder, createDeleteApiFunction(modelName)); await deleteBackup(uid); @@ -23,8 +23,8 @@ async function clear(uid) { async function backup(uid) { const { apiName } = strapi.contentTypes[uid]; - const apiFolder = path.join(strapi.dir, 'api', apiName); - const backupFolder = path.join(strapi.dir, 'api', '.backup', apiName); + const apiFolder = path.join(strapi.dir, 'src', 'api', apiName); + const backupFolder = path.join(strapi.dir, 'src', 'api', '.backup', apiName); // backup the api folder await fse.copy(apiFolder, backupFolder); @@ -37,8 +37,8 @@ async function backup(uid) { async function deleteBackup(uid) { const { apiName } = strapi.contentTypes[uid]; - const backupFolder = path.join(strapi.dir, 'api', '.backup'); - const apiBackupFolder = path.join(strapi.dir, 'api', '.backup', apiName); + const backupFolder = path.join(strapi.dir, 'src', 'api', '.backup'); + const apiBackupFolder = path.join(strapi.dir, 'src', 'api', '.backup', apiName); await fse.remove(apiBackupFolder); @@ -55,8 +55,8 @@ async function deleteBackup(uid) { async function rollback(uid) { const { apiName } = strapi.contentTypes[uid]; - const apiFolder = path.join(strapi.dir, 'api', apiName); - const backupFolder = path.join(strapi.dir, 'api', '.backup', apiName); + const apiFolder = path.join(strapi.dir, 'src', 'api', apiName); + const backupFolder = path.join(strapi.dir, 'src', 'api', '.backup', apiName); const exists = await fse.exists(backupFolder); diff --git a/packages/core/content-type-builder/server/services/component-categories.js b/packages/core/content-type-builder/server/services/component-categories.js index 8ac3822633..204fde9fd7 100644 --- a/packages/core/content-type-builder/server/services/component-categories.js +++ b/packages/core/content-type-builder/server/services/component-categories.js @@ -11,7 +11,7 @@ const createBuilder = require('./schema-builder'); * @param {Object} infos new category data */ const editCategory = async (name, infos) => { - const componentsDir = join(strapi.dir, 'components'); + const componentsDir = join(strapi.dir, 'src', 'components'); const newName = nameToSlug(infos.name); // don't do anything the name doesn't change diff --git a/packages/core/content-type-builder/server/services/content-types.js b/packages/core/content-type-builder/server/services/content-types.js index 6aff69ea04..21b25498f8 100644 --- a/packages/core/content-type-builder/server/services/content-types.js +++ b/packages/core/content-type-builder/server/services/content-types.js @@ -1,5 +1,6 @@ 'use strict'; +const { join } = require('path'); const _ = require('lodash'); const { getOr } = require('lodash/fp'); @@ -127,7 +128,11 @@ const createContentType = async ({ contentType, components = [] }, options = {}) */ const generateAPI = ({ name, kind = 'collectionType' }) => { const strapiGenerators = require('@strapi/generators'); - return strapiGenerators.generate('api', { id: nameToSlug(name), kind }, { dir: strapi.dir }); + return strapiGenerators.generate( + 'api', + { id: nameToSlug(name), kind }, + { dir: join(strapi.dir, 'src') } + ); }; /** diff --git a/packages/core/content-type-builder/server/services/schema-builder/component-builder.js b/packages/core/content-type-builder/server/services/schema-builder/component-builder.js index 52af3de7dc..6a47765b81 100644 --- a/packages/core/content-type-builder/server/services/schema-builder/component-builder.js +++ b/packages/core/content-type-builder/server/services/schema-builder/component-builder.js @@ -38,7 +38,7 @@ module.exports = function createComponentBuilder() { } const handler = createSchemaHandler({ - dir: path.join(strapi.dir, 'components', nameToSlug(infos.category)), + dir: path.join(strapi.dir, 'src', 'components', nameToSlug(infos.category)), filename: `${nameToSlug(infos.name)}.json`, }); @@ -87,7 +87,7 @@ module.exports = function createComponentBuilder() { throw new Error('component.edit.alreadyExists'); } - const newDir = path.join(strapi.dir, 'components', newCategory); + const newDir = path.join(strapi.dir, 'src', 'components', newCategory); const oldAttributes = component.schema.attributes; diff --git a/packages/core/content-type-builder/server/services/schema-builder/content-type-builder.js b/packages/core/content-type-builder/server/services/schema-builder/content-type-builder.js index 91d72574dd..48cc3c9a0f 100644 --- a/packages/core/content-type-builder/server/services/schema-builder/content-type-builder.js +++ b/packages/core/content-type-builder/server/services/schema-builder/content-type-builder.js @@ -80,7 +80,7 @@ module.exports = function createComponentBuilder() { const modelName = nameToSlug(infos.name); const contentType = createSchemaHandler({ modelName: modelName, - dir: path.join(strapi.dir, 'api', modelName, 'content-types', modelName), + dir: path.join(strapi.dir, 'src', 'api', modelName, 'content-types', modelName), filename: `schema.json`, }); diff --git a/packages/core/content-type-builder/server/services/schema-builder/index.js b/packages/core/content-type-builder/server/services/schema-builder/index.js index aedc82a58c..e56afd9735 100644 --- a/packages/core/content-type-builder/server/services/schema-builder/index.js +++ b/packages/core/content-type-builder/server/services/schema-builder/index.js @@ -22,7 +22,7 @@ module.exports = function createBuilder() { plugin: compo.modelName, uid: compo.uid, filename: compo.__filename__, - dir: path.join(strapi.dir, 'components', compo.category), + dir: path.join(strapi.dir, 'src', 'components', compo.category), schema: compo.__schema__, }; }); @@ -30,21 +30,15 @@ module.exports = function createBuilder() { const contentTypes = Object.keys(strapi.contentTypes).map(key => { const contentType = strapi.contentTypes[key]; - let dir; - let filename; - if (contentType.plugin) { - dir = `./extensions/${contentType.plugin}/content-types/${contentType.info.singularName}`; - filename = 'schema.json'; - } else { - dir = `./api/${contentType.apiName}/content-types/${contentType.info.singularName}`; - filename = 'schema.json'; - } + const dir = contentType.plugin + ? `./src/extensions/${contentType.plugin}/content-types/${contentType.info.singularName}` + : `./src/api/${contentType.apiName}/content-types/${contentType.info.singularName}`; return { modelName: contentType.modelName, plugin: contentType.plugin, uid: contentType.uid, - filename, + filename: 'schema.json', dir: path.join(strapi.dir, dir), schema: contentType.__schema__, }; diff --git a/packages/core/strapi/lib/commands/develop.js b/packages/core/strapi/lib/commands/develop.js index db1b517c9c..912b07914a 100644 --- a/packages/core/strapi/lib/commands/develop.js +++ b/packages/core/strapi/lib/commands/develop.js @@ -124,8 +124,8 @@ function watchFileChanges({ dir, strapiInstance, watchIgnoreFiles, polling }) { /tmp/, '**/admin', '**/admin/**', - 'extensions/**/admin', - 'extensions/**/admin/**', + 'src/extensions/**/admin', + 'src/extensions/**/admin/**', '**/documentation', '**/documentation/**', '**/node_modules', diff --git a/packages/core/strapi/lib/core/loaders/apis.js b/packages/core/strapi/lib/core/loaders/apis.js index 7a9164ebf2..5e04ec1f23 100644 --- a/packages/core/strapi/lib/core/loaders/apis.js +++ b/packages/core/strapi/lib/core/loaders/apis.js @@ -14,10 +14,10 @@ const DEFAULT_CONTENT_TYPE = { }; module.exports = async strapi => { - const apisDir = join(strapi.dir, 'api'); + const apisDir = join(strapi.dir, 'src', 'api'); if (!existsSync(apisDir)) { - throw new Error(`Missing api folder. Please create one in your app root directory`); + throw new Error('Missing api folder. Please create one at `./src/api`'); } const apisFDs = await fse.readdir(apisDir, { withFileTypes: true }); diff --git a/packages/core/strapi/lib/core/loaders/components.js b/packages/core/strapi/lib/core/loaders/components.js index 92e28d1e34..13778d19cd 100644 --- a/packages/core/strapi/lib/core/loaders/components.js +++ b/packages/core/strapi/lib/core/loaders/components.js @@ -6,7 +6,7 @@ const { pathExists } = require('fs-extra'); const loadFiles = require('../../load/load-files'); module.exports = async strapi => { - const componentsDir = join(strapi.dir, 'components'); + const componentsDir = join(strapi.dir, 'src', 'components'); if (!(await pathExists(componentsDir))) { return {}; diff --git a/packages/core/strapi/lib/core/loaders/middlewares.js b/packages/core/strapi/lib/core/loaders/middlewares.js index 47de585986..830e1cd5ac 100644 --- a/packages/core/strapi/lib/core/loaders/middlewares.js +++ b/packages/core/strapi/lib/core/loaders/middlewares.js @@ -45,7 +45,7 @@ const createLoaders = strapi => { loadMiddlewaresInDir(path.resolve(__dirname, '..', '..', 'middlewares'), middlewares); const loadLocalMiddlewares = (appPath, middlewares) => - loadMiddlewaresInDir(path.resolve(appPath, 'middlewares'), middlewares); + loadMiddlewaresInDir(path.resolve(appPath, 'src', 'middlewares'), middlewares); const loadMiddlewareDependencies = async (packages, middlewares) => { for (let packageName of packages) { diff --git a/packages/core/strapi/lib/core/loaders/plugins/index.js b/packages/core/strapi/lib/core/loaders/plugins/index.js index 4d2a959fc4..577744fc96 100644 --- a/packages/core/strapi/lib/core/loaders/plugins/index.js +++ b/packages/core/strapi/lib/core/loaders/plugins/index.js @@ -25,7 +25,7 @@ const defaultPlugin = { }; const applyUserExtension = async plugins => { - const extensionsDir = resolve(strapi.dir, 'extensions'); + const extensionsDir = resolve(strapi.dir, 'src', 'extensions'); if (!existsSync(extensionsDir)) { return; } diff --git a/packages/core/strapi/lib/core/loaders/policies.js b/packages/core/strapi/lib/core/loaders/policies.js index c3c2037618..09dba2488b 100644 --- a/packages/core/strapi/lib/core/loaders/policies.js +++ b/packages/core/strapi/lib/core/loaders/policies.js @@ -5,7 +5,7 @@ const fse = require('fs-extra'); // TODO:: allow folders with index.js inside for bigger policies module.exports = async function loadPolicies(strapi) { - const dir = join(strapi.dir, 'policies'); + const dir = join(strapi.dir, 'src', 'policies'); if (!(await fse.pathExists(dir))) { return; diff --git a/packages/generators/app/lib/resources/files/admin/app.js b/packages/generators/app/lib/resources/files/src/admin/app.js similarity index 100% rename from packages/generators/app/lib/resources/files/admin/app.js rename to packages/generators/app/lib/resources/files/src/admin/app.js diff --git a/packages/generators/app/lib/resources/files/admin/webpack.config.js b/packages/generators/app/lib/resources/files/src/admin/webpack.config.js similarity index 100% rename from packages/generators/app/lib/resources/files/admin/webpack.config.js rename to packages/generators/app/lib/resources/files/src/admin/webpack.config.js diff --git a/packages/generators/app/lib/resources/files/api/.gitkeep b/packages/generators/app/lib/resources/files/src/api/.gitkeep similarity index 100% rename from packages/generators/app/lib/resources/files/api/.gitkeep rename to packages/generators/app/lib/resources/files/src/api/.gitkeep diff --git a/packages/generators/app/lib/resources/files/extensions/.gitkeep b/packages/generators/app/lib/resources/files/src/extensions/.gitkeep similarity index 100% rename from packages/generators/app/lib/resources/files/extensions/.gitkeep rename to packages/generators/app/lib/resources/files/src/extensions/.gitkeep From b3f22bac5d0307f477929ecf1800fcb7fe73e842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20No=C3=ABl?= Date: Fri, 17 Sep 2021 14:10:48 +0200 Subject: [PATCH 2/3] use of strapi.dirs --- .../server/services/api-handler.js | 14 +++++++------- .../server/services/component-categories.js | 3 +-- .../server/services/content-types.js | 7 +------ .../services/schema-builder/component-builder.js | 4 ++-- .../schema-builder/content-type-builder.js | 2 +- .../server/services/schema-builder/index.js | 15 ++++++++++----- packages/core/strapi/lib/Strapi.js | 6 +++--- packages/core/strapi/lib/core/loaders/apis.js | 8 +++----- .../core/strapi/lib/core/loaders/components.js | 8 +++----- .../core/loaders/plugins/get-enabled-plugins.js | 4 ++-- .../core/strapi/lib/core/loaders/plugins/index.js | 6 +++--- packages/core/strapi/lib/core/loaders/policies.js | 2 +- .../core/strapi/lib/middlewares/favicon/index.js | 3 +-- .../core/strapi/lib/middlewares/public/index.js | 4 ++-- .../core/strapi/lib/services/__tests__/fs.test.js | 2 +- packages/core/strapi/lib/services/fs.js | 2 +- .../core/strapi/lib/services/metrics/index.js | 2 +- packages/core/strapi/lib/utils/get-dirs.js | 15 +++++++++++++++ packages/core/strapi/lib/utils/index.js | 2 ++ .../strapi/lib/utils/update-notifier/index.js | 2 +- .../upload/server/__tests__/bootstrap.test.js | 2 +- packages/core/upload/server/middlewares/upload.js | 2 +- packages/providers/upload-local/lib/index.js | 2 +- 23 files changed, 64 insertions(+), 53 deletions(-) create mode 100644 packages/core/strapi/lib/utils/get-dirs.js diff --git a/packages/core/content-type-builder/server/services/api-handler.js b/packages/core/content-type-builder/server/services/api-handler.js index 9670281c8c..721e4c3c5c 100644 --- a/packages/core/content-type-builder/server/services/api-handler.js +++ b/packages/core/content-type-builder/server/services/api-handler.js @@ -10,7 +10,7 @@ const fse = require('fs-extra'); async function clear(uid) { const { apiName, modelName } = strapi.contentTypes[uid]; - const apiFolder = path.join(strapi.dir, 'src', 'api', apiName); + const apiFolder = path.join(strapi.dirs.api, apiName); await recursiveRemoveFiles(apiFolder, createDeleteApiFunction(modelName)); await deleteBackup(uid); @@ -23,8 +23,8 @@ async function clear(uid) { async function backup(uid) { const { apiName } = strapi.contentTypes[uid]; - const apiFolder = path.join(strapi.dir, 'src', 'api', apiName); - const backupFolder = path.join(strapi.dir, 'src', 'api', '.backup', apiName); + const apiFolder = path.join(strapi.dirs.api, apiName); + const backupFolder = path.join(strapi.dirs.api, '.backup', apiName); // backup the api folder await fse.copy(apiFolder, backupFolder); @@ -37,8 +37,8 @@ async function backup(uid) { async function deleteBackup(uid) { const { apiName } = strapi.contentTypes[uid]; - const backupFolder = path.join(strapi.dir, 'src', 'api', '.backup'); - const apiBackupFolder = path.join(strapi.dir, 'src', 'api', '.backup', apiName); + const backupFolder = path.join(strapi.dirs.api, '.backup'); + const apiBackupFolder = path.join(strapi.dirs.api, '.backup', apiName); await fse.remove(apiBackupFolder); @@ -55,8 +55,8 @@ async function deleteBackup(uid) { async function rollback(uid) { const { apiName } = strapi.contentTypes[uid]; - const apiFolder = path.join(strapi.dir, 'src', 'api', apiName); - const backupFolder = path.join(strapi.dir, 'src', 'api', '.backup', apiName); + const apiFolder = path.join(strapi.dirs.api, apiName); + const backupFolder = path.join(strapi.dirs.api, '.backup', apiName); const exists = await fse.exists(backupFolder); diff --git a/packages/core/content-type-builder/server/services/component-categories.js b/packages/core/content-type-builder/server/services/component-categories.js index 204fde9fd7..41abe5c1ff 100644 --- a/packages/core/content-type-builder/server/services/component-categories.js +++ b/packages/core/content-type-builder/server/services/component-categories.js @@ -11,7 +11,6 @@ const createBuilder = require('./schema-builder'); * @param {Object} infos new category data */ const editCategory = async (name, infos) => { - const componentsDir = join(strapi.dir, 'src', 'components'); const newName = nameToSlug(infos.name); // don't do anything the name doesn't change @@ -34,7 +33,7 @@ const editCategory = async (name, infos) => { // only edit the components in this specific category if (component.category !== name) return; - component.setUID(newUID).setDir(join(componentsDir, newName)); + component.setUID(newUID).setDir(join(strapi.dirs.components, newName)); builder.components.forEach(compo => { compo.updateComponent(oldUID, newUID); diff --git a/packages/core/content-type-builder/server/services/content-types.js b/packages/core/content-type-builder/server/services/content-types.js index 21b25498f8..962b57fdf1 100644 --- a/packages/core/content-type-builder/server/services/content-types.js +++ b/packages/core/content-type-builder/server/services/content-types.js @@ -1,6 +1,5 @@ 'use strict'; -const { join } = require('path'); const _ = require('lodash'); const { getOr } = require('lodash/fp'); @@ -128,11 +127,7 @@ const createContentType = async ({ contentType, components = [] }, options = {}) */ const generateAPI = ({ name, kind = 'collectionType' }) => { const strapiGenerators = require('@strapi/generators'); - return strapiGenerators.generate( - 'api', - { id: nameToSlug(name), kind }, - { dir: join(strapi.dir, 'src') } - ); + return strapiGenerators.generate('api', { id: nameToSlug(name), kind }, { dir: strapi.dirs.src }); }; /** diff --git a/packages/core/content-type-builder/server/services/schema-builder/component-builder.js b/packages/core/content-type-builder/server/services/schema-builder/component-builder.js index 6a47765b81..ddfcd3c2b2 100644 --- a/packages/core/content-type-builder/server/services/schema-builder/component-builder.js +++ b/packages/core/content-type-builder/server/services/schema-builder/component-builder.js @@ -38,7 +38,7 @@ module.exports = function createComponentBuilder() { } const handler = createSchemaHandler({ - dir: path.join(strapi.dir, 'src', 'components', nameToSlug(infos.category)), + dir: path.join(strapi.dirs.components, nameToSlug(infos.category)), filename: `${nameToSlug(infos.name)}.json`, }); @@ -87,7 +87,7 @@ module.exports = function createComponentBuilder() { throw new Error('component.edit.alreadyExists'); } - const newDir = path.join(strapi.dir, 'src', 'components', newCategory); + const newDir = path.join(strapi.dirs.components, newCategory); const oldAttributes = component.schema.attributes; diff --git a/packages/core/content-type-builder/server/services/schema-builder/content-type-builder.js b/packages/core/content-type-builder/server/services/schema-builder/content-type-builder.js index 48cc3c9a0f..3d8fcd2ce4 100644 --- a/packages/core/content-type-builder/server/services/schema-builder/content-type-builder.js +++ b/packages/core/content-type-builder/server/services/schema-builder/content-type-builder.js @@ -80,7 +80,7 @@ module.exports = function createComponentBuilder() { const modelName = nameToSlug(infos.name); const contentType = createSchemaHandler({ modelName: modelName, - dir: path.join(strapi.dir, 'src', 'api', modelName, 'content-types', modelName), + dir: path.join(strapi.dirs.api, modelName, 'content-types', modelName), filename: `schema.json`, }); diff --git a/packages/core/content-type-builder/server/services/schema-builder/index.js b/packages/core/content-type-builder/server/services/schema-builder/index.js index e56afd9735..720e5f07bc 100644 --- a/packages/core/content-type-builder/server/services/schema-builder/index.js +++ b/packages/core/content-type-builder/server/services/schema-builder/index.js @@ -1,6 +1,6 @@ 'use strict'; -const path = require('path'); +const { join } = require('path'); const _ = require('lodash'); const createSchemaHandler = require('./schema-handler'); @@ -22,7 +22,7 @@ module.exports = function createBuilder() { plugin: compo.modelName, uid: compo.uid, filename: compo.__filename__, - dir: path.join(strapi.dir, 'src', 'components', compo.category), + dir: join(strapi.dirs.components, compo.category), schema: compo.__schema__, }; }); @@ -31,15 +31,20 @@ module.exports = function createBuilder() { const contentType = strapi.contentTypes[key]; const dir = contentType.plugin - ? `./src/extensions/${contentType.plugin}/content-types/${contentType.info.singularName}` - : `./src/api/${contentType.apiName}/content-types/${contentType.info.singularName}`; + ? join( + strapi.dirs.extensions, + contentType.plugin, + 'content-types', + contentType.info.singularName + ) + : join(strapi.dirs.api, contentType.apiName, 'content-types', contentType.info.singularName); return { modelName: contentType.modelName, plugin: contentType.plugin, uid: contentType.uid, filename: 'schema.json', - dir: path.join(strapi.dir, dir), + dir, schema: contentType.__schema__, }; }); diff --git a/packages/core/strapi/lib/Strapi.js b/packages/core/strapi/lib/Strapi.js index e2dbba44cc..7fde6f6436 100644 --- a/packages/core/strapi/lib/Strapi.js +++ b/packages/core/strapi/lib/Strapi.js @@ -41,8 +41,8 @@ const LIFECYCLES = { class Strapi { constructor(opts = {}) { - this.dir = opts.dir || process.cwd(); - const appConfig = loadConfiguration(this.dir, opts); + this.dirs = utils.getDirs(opts.dir || process.cwd()); + const appConfig = loadConfiguration(this.dirs.root, opts); this.container = createContainer(this); this.container.register('config', createConfigProvider(appConfig)); this.container.register('content-types', contentTypesRegistry(this)); @@ -72,7 +72,7 @@ class Strapi { } get EE() { - return ee({ dir: this.dir, logger: this.log }); + return ee({ dir: this.dirs.root, logger: this.log }); } service(uid) { diff --git a/packages/core/strapi/lib/core/loaders/apis.js b/packages/core/strapi/lib/core/loaders/apis.js index 5e04ec1f23..e7cb6c685b 100644 --- a/packages/core/strapi/lib/core/loaders/apis.js +++ b/packages/core/strapi/lib/core/loaders/apis.js @@ -14,20 +14,18 @@ const DEFAULT_CONTENT_TYPE = { }; module.exports = async strapi => { - const apisDir = join(strapi.dir, 'src', 'api'); - - if (!existsSync(apisDir)) { + if (!existsSync(strapi.dirs.api)) { throw new Error('Missing api folder. Please create one at `./src/api`'); } - const apisFDs = await fse.readdir(apisDir, { withFileTypes: true }); + const apisFDs = await fse.readdir(strapi.dirs.api, { withFileTypes: true }); const apis = {}; // only load folders for (const apiFD of apisFDs) { if (apiFD.isDirectory()) { const apiName = normalizeName(apiFD.name); - const api = await loadAPI(join(apisDir, apiFD.name)); + const api = await loadAPI(join(strapi.dirs.api, apiFD.name)); apis[apiName] = api; } diff --git a/packages/core/strapi/lib/core/loaders/components.js b/packages/core/strapi/lib/core/loaders/components.js index 13778d19cd..57d0d35899 100644 --- a/packages/core/strapi/lib/core/loaders/components.js +++ b/packages/core/strapi/lib/core/loaders/components.js @@ -6,19 +6,17 @@ const { pathExists } = require('fs-extra'); const loadFiles = require('../../load/load-files'); module.exports = async strapi => { - const componentsDir = join(strapi.dir, 'src', 'components'); - - if (!(await pathExists(componentsDir))) { + if (!(await pathExists(strapi.dirs.components))) { return {}; } - const map = await loadFiles(componentsDir, '*/*.*(js|json)'); + const map = await loadFiles(strapi.dirs.components, '*/*.*(js|json)'); return Object.keys(map).reduce((acc, category) => { Object.keys(map[category]).forEach(key => { const schema = map[category][key]; - const filePath = join(componentsDir, category, schema.__filename__); + const filePath = join(strapi.dirs.components, category, schema.__filename__); if (!schema.collectionName) { return strapi.stopWithError( diff --git a/packages/core/strapi/lib/core/loaders/plugins/get-enabled-plugins.js b/packages/core/strapi/lib/core/loaders/plugins/get-enabled-plugins.js index 352e204da5..d6b6c52002 100644 --- a/packages/core/strapi/lib/core/loaders/plugins/get-enabled-plugins.js +++ b/packages/core/strapi/lib/core/loaders/plugins/get-enabled-plugins.js @@ -32,7 +32,7 @@ const toDetailedDeclaration = declaration => { try { pathToPlugin = dirname(require.resolve(declaration.resolve)); } catch (e) { - pathToPlugin = resolve(strapi.dir, declaration.resolve); + pathToPlugin = resolve(strapi.dirs.root, declaration.resolve); if (!existsSync(pathToPlugin) || !statSync(pathToPlugin).isDirectory()) { throw new Error(`${declaration.resolve} couldn't be resolved`); @@ -72,7 +72,7 @@ const getEnabledPlugins = async strapi => { } const declaredPlugins = {}; - const userPluginConfigPath = join(strapi.dir, 'config', 'plugins.js'); + const userPluginConfigPath = join(strapi.dirs.config, 'plugins.js'); const userPluginsConfig = existsSync(userPluginConfigPath) ? loadConfigFile(userPluginConfigPath) : {}; diff --git a/packages/core/strapi/lib/core/loaders/plugins/index.js b/packages/core/strapi/lib/core/loaders/plugins/index.js index 577744fc96..c22173acfd 100644 --- a/packages/core/strapi/lib/core/loaders/plugins/index.js +++ b/packages/core/strapi/lib/core/loaders/plugins/index.js @@ -1,6 +1,6 @@ 'use strict'; -const { join, resolve } = require('path'); +const { join } = require('path'); const { existsSync } = require('fs'); const { defaultsDeep, getOr, get } = require('lodash/fp'); const { env } = require('@strapi/utils'); @@ -25,7 +25,7 @@ const defaultPlugin = { }; const applyUserExtension = async plugins => { - const extensionsDir = resolve(strapi.dir, 'src', 'extensions'); + const extensionsDir = strapi.dirs.extensions; if (!existsSync(extensionsDir)) { return; } @@ -62,7 +62,7 @@ const formatContentTypes = plugins => { }; const applyUserConfig = plugins => { - const userPluginConfigPath = join(strapi.dir, 'config', 'plugins.js'); + const userPluginConfigPath = join(strapi.dirs.config, 'plugins.js'); const userPluginsConfig = existsSync(userPluginConfigPath) ? loadConfigFile(userPluginConfigPath) : {}; diff --git a/packages/core/strapi/lib/core/loaders/policies.js b/packages/core/strapi/lib/core/loaders/policies.js index 09dba2488b..1783e71d5c 100644 --- a/packages/core/strapi/lib/core/loaders/policies.js +++ b/packages/core/strapi/lib/core/loaders/policies.js @@ -5,7 +5,7 @@ const fse = require('fs-extra'); // TODO:: allow folders with index.js inside for bigger policies module.exports = async function loadPolicies(strapi) { - const dir = join(strapi.dir, 'src', 'policies'); + const dir = strapi.dirs.policies; if (!(await fse.pathExists(dir))) { return; diff --git a/packages/core/strapi/lib/middlewares/favicon/index.js b/packages/core/strapi/lib/middlewares/favicon/index.js index cc8fb6e49a..fd55a6550e 100644 --- a/packages/core/strapi/lib/middlewares/favicon/index.js +++ b/packages/core/strapi/lib/middlewares/favicon/index.js @@ -19,11 +19,10 @@ module.exports = strapi => { */ initialize() { - const { dir } = strapi; const { maxAge, path: faviconPath } = strapi.config.middleware.settings.favicon; strapi.server.use( - favicon(resolve(dir, faviconPath), { + favicon(resolve(strapi.dirs.root, faviconPath), { maxAge, }) ); diff --git a/packages/core/strapi/lib/middlewares/public/index.js b/packages/core/strapi/lib/middlewares/public/index.js index 25479a8fcc..3936fa27fb 100644 --- a/packages/core/strapi/lib/middlewares/public/index.js +++ b/packages/core/strapi/lib/middlewares/public/index.js @@ -25,7 +25,7 @@ module.exports = strapi => { async initialize() { const { defaultIndex, maxAge, path: publicPath } = strapi.config.middleware.settings.public; - const staticDir = path.resolve(strapi.dir, publicPath || strapi.config.paths.static); + const staticDir = path.resolve(strapi.dirs.root, publicPath || strapi.config.paths.static); if (defaultIndex === true) { const index = fs.readFileSync(path.join(__dirname, 'index.html'), 'utf8'); @@ -98,7 +98,7 @@ module.exports = strapi => { if (!strapi.config.serveAdminPanel) return; - const buildDir = path.resolve(strapi.dir, 'build'); + const buildDir = path.resolve(strapi.dirs.root, 'build'); const serveAdmin = async (ctx, next) => { await next(); diff --git a/packages/core/strapi/lib/services/__tests__/fs.test.js b/packages/core/strapi/lib/services/__tests__/fs.test.js index 4559f763fe..6b2f6151e7 100644 --- a/packages/core/strapi/lib/services/__tests__/fs.test.js +++ b/packages/core/strapi/lib/services/__tests__/fs.test.js @@ -11,7 +11,7 @@ const fs = require('../fs'); describe('Strapi fs utils', () => { const strapi = { - dir: '/tmp', + dirs: { root: '/tmp' }, }; test('Provides new functions', () => { diff --git a/packages/core/strapi/lib/services/fs.js b/packages/core/strapi/lib/services/fs.js index 1cfcad9c95..b0535b0005 100644 --- a/packages/core/strapi/lib/services/fs.js +++ b/packages/core/strapi/lib/services/fs.js @@ -12,7 +12,7 @@ module.exports = strapi => { const normalizedPath = path.normalize(filePath).replace(/^\/?(\.\/|\.\.\/)+/, ''); - return path.join(strapi.dir, normalizedPath); + return path.join(strapi.dirs.root, normalizedPath); } const strapiFS = { diff --git a/packages/core/strapi/lib/services/metrics/index.js b/packages/core/strapi/lib/services/metrics/index.js index 7a9a92d715..8b0402e0b5 100644 --- a/packages/core/strapi/lib/services/metrics/index.js +++ b/packages/core/strapi/lib/services/metrics/index.js @@ -88,7 +88,7 @@ const hashProject = strapi => const hashDep = strapi => { const depStr = JSON.stringify(strapi.config.info.dependencies); - const readmePath = path.join(strapi.dir, 'README.md'); + const readmePath = path.join(strapi.dirs.root, 'README.md'); try { if (fs.existsSync(readmePath)) { diff --git a/packages/core/strapi/lib/utils/get-dirs.js b/packages/core/strapi/lib/utils/get-dirs.js new file mode 100644 index 0000000000..707e6432cb --- /dev/null +++ b/packages/core/strapi/lib/utils/get-dirs.js @@ -0,0 +1,15 @@ +'use strict'; + +const { join } = require('path'); + +const getDirs = root => ({ + root, + src: join(root, 'src'), + api: join(root, 'src', 'api'), + components: join(root, 'src', 'components'), + extensions: join(root, 'src', 'extensions'), + policies: join(root, 'src', 'policies'), + config: join(root, 'config'), +}); + +module.exports = getDirs; diff --git a/packages/core/strapi/lib/utils/index.js b/packages/core/strapi/lib/utils/index.js index a98becba31..6d4ea2a031 100644 --- a/packages/core/strapi/lib/utils/index.js +++ b/packages/core/strapi/lib/utils/index.js @@ -2,8 +2,10 @@ const openBrowser = require('./open-browser'); const isInitialized = require('./is-initialized'); +const getDirs = require('./get-dirs'); module.exports = { isInitialized, openBrowser, + getDirs, }; diff --git a/packages/core/strapi/lib/utils/update-notifier/index.js b/packages/core/strapi/lib/utils/update-notifier/index.js index f7fc2b0d54..08d0b293a4 100644 --- a/packages/core/strapi/lib/utils/update-notifier/index.js +++ b/packages/core/strapi/lib/utils/update-notifier/index.js @@ -38,7 +38,7 @@ const createUpdateNotifier = strapi => { config = new Configstore( pkg.name, {}, - { configPath: path.join(strapi.dir, '.strapi-updater.json') } + { configPath: path.join(strapi.dirs.root, '.strapi-updater.json') } ); } catch { // we don't have write access to the file system diff --git a/packages/core/upload/server/__tests__/bootstrap.test.js b/packages/core/upload/server/__tests__/bootstrap.test.js index 598dc8cadd..abbad775ea 100644 --- a/packages/core/upload/server/__tests__/bootstrap.test.js +++ b/packages/core/upload/server/__tests__/bootstrap.test.js @@ -8,7 +8,7 @@ describe('Upload plugin bootstrap function', () => { const registerMany = jest.fn(() => {}); global.strapi = { - dir: process.cwd(), + dirs: { root: process.cwd() }, admin: { services: { permission: { actionProvider: { registerMany } } }, }, diff --git a/packages/core/upload/server/middlewares/upload.js b/packages/core/upload/server/middlewares/upload.js index a96bf57db3..e49b71e522 100644 --- a/packages/core/upload/server/middlewares/upload.js +++ b/packages/core/upload/server/middlewares/upload.js @@ -12,7 +12,7 @@ module.exports = { 'middleware.settings.public.path', strapi.config.paths.static ); - const staticDir = resolve(strapi.dir, configPublicPath); + const staticDir = resolve(strapi.dirs.root, configPublicPath); strapi.server.app.on('error', err => { if (err.code === 'EPIPE') { diff --git a/packages/providers/upload-local/lib/index.js b/packages/providers/upload-local/lib/index.js index cfd199280e..46db0b083f 100644 --- a/packages/providers/upload-local/lib/index.js +++ b/packages/providers/upload-local/lib/index.js @@ -21,7 +21,7 @@ module.exports = { strapi.config.paths.static ); - const uploadDir = path.resolve(strapi.dir, configPublicPath); + const uploadDir = path.resolve(strapi.dirs.root, configPublicPath); return { upload(file) { From 938673db2fb54d2539ac8aa6db53d528277b62a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20No=C3=ABl?= Date: Mon, 20 Sep 2021 11:34:18 +0200 Subject: [PATCH 3/3] use src structure for templates --- packages/generators/app/lib/utils/merge-template.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/generators/app/lib/utils/merge-template.js b/packages/generators/app/lib/utils/merge-template.js index 455dea456b..a2f44a2328 100644 --- a/packages/generators/app/lib/utils/merge-template.js +++ b/packages/generators/app/lib/utils/merge-template.js @@ -13,13 +13,15 @@ const allowChildren = '*'; const allowedTemplateContents = { 'README.md': true, '.env.example': true, - api: allowChildren, - components: allowChildren, + src: { + api: allowChildren, + components: allowChildren, + plugins: allowChildren, + }, config: { functions: allowChildren, }, data: allowChildren, - plugins: allowChildren, public: allowChildren, scripts: allowChildren, };