V14: umbraco-package.json schema (#14319)

* copy umbraco-package-schema.json over from the New.Client build

* when a project referencing Cms.Targets is  building, we want to copy out the umbraco-package-schema.json file to the project directory if it does not exist

* ignore built output files

* fix typo

* add PackageReference to Umbraco.Cms.Targets to ensure dependent json schema files are copied over

* add to gitignore

* add target to remove the _UmbracoCmsPackageSchemaReference on clean

* Revert "add PackageReference to Umbraco.Cms.Targets to ensure dependent json schema files are copied over"

This reverts commit 339043a36fd0074624c3060ff0113283a9eb6376.

* generate umbraco-package-schema.json on demand in Cms.Targets

* add generated file to .gitignore
This commit is contained in:
Jacob Overgaard
2023-05-31 19:12:00 +02:00
committed by GitHub
parent cdd3adfd3c
commit 33cb74dff1
6 changed files with 25 additions and 2 deletions

3
.gitignore vendored
View File

@@ -107,10 +107,13 @@ preserve.belle
# Ignore auto-generated schema # Ignore auto-generated schema
/src/Umbraco.Cms.Targets/tasks/ /src/Umbraco.Cms.Targets/tasks/
/src/Umbraco.Cms.Targets/appsettings-schema.*.json /src/Umbraco.Cms.Targets/appsettings-schema.*.json
/src/Umbraco.Cms.Targets/umbraco-package-schema.json
/src/Umbraco.Web.UI/appsettings-schema.json /src/Umbraco.Web.UI/appsettings-schema.json
/src/Umbraco.Web.UI/appsettings-schema.*.json /src/Umbraco.Web.UI/appsettings-schema.*.json
/src/Umbraco.Web.UI/umbraco-package-schema.json
/tests/Umbraco.Tests.Integration/appsettings-schema.json /tests/Umbraco.Tests.Integration/appsettings-schema.json
/tests/Umbraco.Tests.Integration/appsettings-schema.*.json /tests/Umbraco.Tests.Integration/appsettings-schema.*.json
/tests/Umbraco.Tests.Integration/umbraco-package-schema.json
/src/Umbraco.Cms/appsettings-schema.json /src/Umbraco.Cms/appsettings-schema.json
playwright-report playwright-report
trace.zip trace.zip

View File

@@ -21,12 +21,14 @@
<!-- Add JSON schema references (and include MSBuild task) --> <!-- Add JSON schema references (and include MSBuild task) -->
<PropertyGroup> <PropertyGroup>
<_UmbracoCmsJsonSchemaReference>appsettings-schema.Umbraco.Cms.json</_UmbracoCmsJsonSchemaReference> <_UmbracoCmsJsonSchemaReference>appsettings-schema.Umbraco.Cms.json</_UmbracoCmsJsonSchemaReference>
<_UmbracoCmsPackageSchemaReference>umbraco-package-schema.json</_UmbracoCmsPackageSchemaReference>
<NoWarn>NU5100;NU5128</NoWarn> <NoWarn>NU5100;NU5128</NoWarn>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Umbraco.JsonSchema.Extensions" Version="0.3.0" PrivateAssets="all" GeneratePathProperty="true" /> <PackageReference Include="Umbraco.JsonSchema.Extensions" Version="0.3.0" PrivateAssets="all" GeneratePathProperty="true" />
<None Include="$(PkgUmbraco_JsonSchema_Extensions)\tasks\netstandard2.0\**" Pack="true" PackagePath="tasks\netstandard2.0" Visible="false" /> <None Include="$(PkgUmbraco_JsonSchema_Extensions)\tasks\netstandard2.0\**" Pack="true" PackagePath="tasks\netstandard2.0" Visible="false" />
<Content Include="$(_UmbracoCmsJsonSchemaReference)" PackagePath="" Visible="false" /> <Content Include="$(_UmbracoCmsJsonSchemaReference)" PackagePath="" Visible="false" />
<Content Include="$(_UmbracoCmsPackageSchemaReference)" PackagePath="" Visible="false" />
</ItemGroup> </ItemGroup>
<!-- We also need physical copies in the right location relative to the Umbraco.Cms.Targets.targets file, as that's directly referenced in projects --> <!-- We also need physical copies in the right location relative to the Umbraco.Cms.Targets.targets file, as that's directly referenced in projects -->
@@ -58,4 +60,15 @@
<_PackageFiles Include="$(IntermediateOutputPath)_._" PackagePath="lib\$(TargetFramework)" /> <_PackageFiles Include="$(IntermediateOutputPath)_._" PackagePath="lib\$(TargetFramework)" />
</ItemGroup> </ItemGroup>
</Target> </Target>
<!-- Generate JSON package schema on build (and before copying to project) -->
<Target Name="GenerateUmbracoPackageSchema" BeforeTargets="Build;CopyUmbracoJsonSchemaFiles" Condition="!Exists('$(_UmbracoCmsPackageSchemaReference)')">
<Message Text="Generating $(_UmbracoCmsPackageSchemaReference) because it doesn't exist" Importance="high" />
<Exec WorkingDirectory="$(MsBuildThisFileDirectory)..\Umbraco.Web.UI.New.Client" Command="npm run generate:jsonschema -- --out &quot;$(MSBuildThisFileDirectory)$(_UmbracoCmsPackageSchemaReference)&quot; tsconfig.json UmbracoPackage" />
</Target>
<!-- Remove generated JSON package schema on clean -->
<Target Name="RemovePackageSchema" AfterTargets="Clean" Condition="Exists('$(_UmbracoCmsPackageSchemaReference)')">
<Delete Files="$(_UmbracoCmsPackageSchemaReference)" />
</Target>
</Project> </Project>

View File

@@ -12,5 +12,6 @@
<ItemGroup> <ItemGroup>
<UmbracoJsonSchemaReferences Include="https://json.schemastore.org/appsettings.json" Weight="-100" /> <UmbracoJsonSchemaReferences Include="https://json.schemastore.org/appsettings.json" Weight="-100" />
<UmbracoJsonSchemaFiles Include="$(MSBuildThisFileDirectory)..\appsettings-schema.Umbraco.Cms.json" Weight="-90" /> <UmbracoJsonSchemaFiles Include="$(MSBuildThisFileDirectory)..\appsettings-schema.Umbraco.Cms.json" Weight="-90" />
<UmbracoPackageSchemaFiles Include="$(MSBuildThisFileDirectory)..\umbraco-package-schema.json" Weight="-90" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@@ -8,11 +8,14 @@
<DependentUpon>appsettings-schema.json</DependentUpon> <DependentUpon>appsettings-schema.json</DependentUpon>
</Content> </Content>
</ItemGroup> </ItemGroup>
<!-- Copy JSON schema files into the project directory --> <!-- Copy JSON schema files into the project directory -->
<Target Name="CopyUmbracoJsonSchemaFiles" BeforeTargets="Build"> <Target Name="CopyUmbracoJsonSchemaFiles" BeforeTargets="Build">
<Message Text="Copying JSON schema files into project directory: @(UmbracoJsonSchemaFiles->'%(Filename)%(Extension)')" Importance="high" /> <Message Text="Copying JSON schema files into project directory: @(UmbracoJsonSchemaFiles->'%(Filename)%(Extension)')" Importance="high" />
<Copy SourceFiles="@(UmbracoJsonSchemaFiles)" DestinationFolder="$(MSBuildProjectDirectory)" SkipUnchangedFiles="true" /> <Copy SourceFiles="@(UmbracoJsonSchemaFiles)" DestinationFolder="$(MSBuildProjectDirectory)" SkipUnchangedFiles="true" />
<Message Text="Copying JSON schema files into project directory: @(UmbracoPackageSchemaFiles->'%(Filename)%(Extension)')" Importance="high" />
<Copy SourceFiles="@(UmbracoPackageSchemaFiles)" DestinationFolder="$(MSBuildProjectDirectory)" SkipUnchangedFiles="true" />
</Target> </Target>
<!-- Add references to the JSON schema in the project directory --> <!-- Add references to the JSON schema in the project directory -->

View File

@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<Title>Umbraco CMS - Templates</Title> <Title>Umbraco CMS - Templates</Title>
<Description>Coontains templates for Umbraco CMS.</Description> <Description>Contains templates for Umbraco CMS.</Description>
<PackageType>Template</PackageType> <PackageType>Template</PackageType>
<IncludeBuildOutput>false</IncludeBuildOutput> <IncludeBuildOutput>false</IncludeBuildOutput>
<IncludeSymbols>false</IncludeSymbols> <IncludeSymbols>false</IncludeSymbols>

View File

@@ -463,6 +463,9 @@ $RECYCLE.BIN/
appsettings-schema.json appsettings-schema.json
appsettings-schema.*.json appsettings-schema.*.json
# JSON schema file for umbraco-package.json
umbraco-package-schema.json
# Packages created from the backoffice (package.xml/package.zip) # Packages created from the backoffice (package.xml/package.zip)
/umbraco/Data/CreatedPackages/ /umbraco/Data/CreatedPackages/