mirror of
https://github.com/ElectronNET/Electron.NET.git
synced 2026-07-08 17:56:51 +00:00
Relax Migration check for package.json in root
This commit is contained in:
@@ -8,7 +8,9 @@ When you build an Electron.NET project, the following validation checks are perf
|
||||
|
||||
| Code | Check | Description |
|
||||
|------|-------|-------------|
|
||||
| [ELECTRON001](#1-packagejson-not-allowed) | package.json not allowed | Ensures no package.json exists outside ElectronHostHook |
|
||||
| [ELECTRON001](#1-packagejson-rules) | package.json location rules | Ensures `package.json`/`package-lock.json` aren’t present in unsupported locations (root `package.json` handled separately) |
|
||||
| [ELECTRON008](#1-packagejson-rules) | root package.json contains electron | Warns when root `package.json` contains the word `electron` (case-insensitive) |
|
||||
| [ELECTRON009](#1-packagejson-rules) | root package.json copied to output | Warns when root `package.json` is configured to be copied to output/publish |
|
||||
| [ELECTRON002](#2-electron-manifestjson-not-allowed) | electron-manifest.json not allowed | Detects deprecated manifest files |
|
||||
| [ELECTRON003](#3-electron-builderjson-location) | electron-builder.json location | Verifies electron-builder.json exists in Properties folder |
|
||||
| [ELECTRON004](#3-electron-builderjson-location) | electron-builder.json wrong location | Warns if electron-builder.json is found in incorrect locations |
|
||||
@@ -18,24 +20,38 @@ When you build an Electron.NET project, the following validation checks are perf
|
||||
|
||||
---
|
||||
|
||||
## 1. package.json not allowed
|
||||
## 1. package.json rules
|
||||
|
||||
**Warning Code:** `ELECTRON001`
|
||||
**Warning Codes:** `ELECTRON001`, `ELECTRON008`, `ELECTRON009`
|
||||
|
||||
### What is checked
|
||||
|
||||
The build system scans for `package.json` and `package-lock.json` files in your project directory. These files should not exist in the project root or subdirectories (with one exception).
|
||||
The build system scans for `package.json` and `package-lock.json` files in your project directory.
|
||||
|
||||
Rules:
|
||||
|
||||
- **ELECTRON001**: `package.json` / `package-lock.json` must not exist in the project directory or subdirectories
|
||||
- Exception: `ElectronHostHook` folder is allowed
|
||||
- Note: a **root** `package.json` is **excluded** from `ELECTRON001` and validated by `ELECTRON008` / `ELECTRON009`
|
||||
|
||||
- **ELECTRON008**: If a root `package.json` exists, it must **not** contain electron-related dependencies or configuration.
|
||||
|
||||
- **ELECTRON009**: If a root `package.json` exists, it must **not** be configured to be copied to output/publish (for example via `CopyToOutputDirectory` / `CopyToPublishDirectory` metadata)
|
||||
|
||||
### Why this matters
|
||||
|
||||
In previous versions of Electron.NET, a `package.json` file was required in the project. The new version generates this file automatically from MSBuild properties defined in your `.csproj` file.
|
||||
Electron.NET generates its Electron-related `package.json` during publishing based on MSBuild properties. A user-maintained Electron-related `package.json` can conflict with that process.
|
||||
|
||||
Also, ensuring the root `package.json` is not copied prevents accidentally shipping it with the published app.
|
||||
|
||||
### Exception
|
||||
|
||||
A `package.json` file **is allowed** in the `ElectronHostHook` folder if you're using custom host hooks. This is the only valid location for a manually maintained package.json.
|
||||
A `package.json` / `package-lock.json` file **is allowed** in the `ElectronHostHook` folder if you're using custom host hooks.
|
||||
|
||||
### How to fix
|
||||
|
||||
If you have an Electron-related `package.json` from older Electron.NET versions:
|
||||
|
||||
1. **Open your project's `.csproj` file**
|
||||
2. **Add the required properties** to a PropertyGroup with the label `ElectronNetCommon`:
|
||||
|
||||
@@ -51,7 +67,12 @@ A `package.json` file **is allowed** in the `ElectronHostHook` folder if you're
|
||||
</PropertyGroup>
|
||||
```
|
||||
|
||||
3. **Delete the old `package.json`** file from your project root
|
||||
3. **Delete** Electron-related `package.json` / `package-lock.json` files (except those under `ElectronHostHook` if applicable)
|
||||
|
||||
If you keep a root `package.json` for non-Electron reasons:
|
||||
|
||||
- Ensure it does **not** contain electron dependencies or configuration (fixes `ELECTRON008`)
|
||||
- Ensure it is **not** copied to output/publish (fixes `ELECTRON009`)
|
||||
|
||||
> **See also:** [Migration Guide](Migration-Guide.md) for complete migration instructions.
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
<PropertyGroup>
|
||||
<ElectronMigrationChecksDependsOn>
|
||||
ElectronCheckNoPackageJson;
|
||||
ElectronCheckRootPackageJsonNoElectron;
|
||||
ElectronCheckRootPackageJsonNotCopied;
|
||||
ElectronCheckNoManifestJson;
|
||||
ElectronCheckElectronBuilderJson;
|
||||
ElectronCheckNoParentPaths;
|
||||
@@ -19,14 +21,17 @@
|
||||
</Target>
|
||||
|
||||
<!--
|
||||
Check 1: No package.json must be present in the project (except ElectronHostHook folder)
|
||||
Check 1: No package.json/package-lock.json must be present in the project (except ElectronHostHook folder)
|
||||
|
||||
NOTE: Root package.json is excluded from ELECTRON001 and checked by separate targets.
|
||||
-->
|
||||
<Target Name="ElectronCheckNoPackageJson">
|
||||
|
||||
<!-- Find all package.json files, excluding ElectronHostHook folder and output directories -->
|
||||
<!-- Find all package.json files, excluding ElectronHostHook folder, root, and output directories -->
|
||||
<ItemGroup>
|
||||
<_InvalidPackageJson Include="$(MSBuildProjectDirectory)\**\package.json"
|
||||
Exclude="$(MSBuildProjectDirectory)\ElectronHostHook\**\package.json;
|
||||
Exclude="$(MSBuildProjectDirectory)\package.json;
|
||||
$(MSBuildProjectDirectory)\ElectronHostHook\**\package.json;
|
||||
$(MSBuildProjectDirectory)\bin\**\package.json;
|
||||
$(MSBuildProjectDirectory)\obj\**\package.json;
|
||||
$(MSBuildProjectDirectory)\publish\**\package.json;
|
||||
@@ -46,17 +51,87 @@
|
||||
|
||||
<Warning Condition="'$(_HasInvalidPackageJson)' == 'true'"
|
||||
Code="ELECTRON001"
|
||||
Text="Found package.json or package-lock.json file(s) in the project root or subdirectories. These files are no longer supported in this location.
|
||||
Text="Found package.json or package-lock.json file(s) in unsupported location(s). These files are no longer supported in this location.
|
||||
|
||||
Files found:
|
||||
@(_InvalidPackageJson, '%0A')@(_InvalidPackageLockJson, '%0A')
|
||||
|
||||
MIGRATION REQUIRED:
|
||||
All properties from an existing package.json file must now be specified as MSBuild properties in the project file.
|
||||
All Electron.NET-related properties from an existing package.json must now be specified as MSBuild properties in the project file.
|
||||
|
||||
For more information, see: https://github.com/ElectronNET/Electron.NET/wiki/Migration-Checks#1-packagejson-not-allowed
|
||||
|
||||
EXCEPTION: package.json and package-lock.json files ARE allowed in the 'ElectronHostHook' folder for custom host hook implementations." />
|
||||
EXCEPTION:
|
||||
- package.json and package-lock.json files ARE allowed in the 'ElectronHostHook' folder for custom host hook implementations.
|
||||
- A package.json in the project root is handled by separate migration checks." />
|
||||
|
||||
</Target>
|
||||
|
||||
<!--
|
||||
Check 1b: Root package.json must not contain Electron-related configuration
|
||||
-->
|
||||
<Target Name="ElectronCheckRootPackageJsonNoElectron"
|
||||
Condition="Exists('$(MSBuildProjectDirectory)\package.json')">
|
||||
|
||||
<ItemGroup>
|
||||
<_RootPackageJsonLines Include="$([System.IO.File]::ReadAllLines('$(MSBuildProjectDirectory)\package.json'))" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<_RootPackageJsonContent>@(_RootPackageJsonLines, ' ')</_RootPackageJsonContent>
|
||||
<_RootPackageJsonHasElectron>false</_RootPackageJsonHasElectron>
|
||||
<_RootPackageJsonHasElectron Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('$(_RootPackageJsonContent)', 'electron', System.Text.RegularExpressions.RegexOptions.IgnoreCase))">true</_RootPackageJsonHasElectron>
|
||||
</PropertyGroup>
|
||||
|
||||
<Warning
|
||||
Condition="'$(_RootPackageJsonHasElectron)' == 'true'"
|
||||
Code="ELECTRON008"
|
||||
Text="The project contains a root package.json that references 'electron' (case-insensitive).
|
||||
|
||||
File:
|
||||
$(MSBuildProjectDirectory)\package.json
|
||||
|
||||
MIGRATION REQUIRED:
|
||||
Electron.NET configuration must be defined via MSBuild properties and electron-builder.json (not via a user-provided package.json).
|
||||
|
||||
HOW TO FIX:
|
||||
- Remove Electron-related entries from the root package.json, or delete the file if it's only used for Electron configuration.
|
||||
|
||||
For more information, see: https://github.com/ElectronNET/Electron.NET/wiki/Migration-Checks#1-packagejson-not-allowed" />
|
||||
|
||||
</Target>
|
||||
|
||||
<!--
|
||||
Check 1c: Root package.json must not be copied to output/publish
|
||||
-->
|
||||
<Target Name="ElectronCheckRootPackageJsonNotCopied"
|
||||
Condition="Exists('$(MSBuildProjectDirectory)\package.json')">
|
||||
|
||||
<ItemGroup>
|
||||
<_RootPackageJsonFile Include="@(Content);@(None)"
|
||||
Condition="'%(Identity)' == 'package.json' OR '%(Identity)' == '$(MSBuildProjectDirectory)\package.json'" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<_RootPackageJsonIsCopied>false</_RootPackageJsonIsCopied>
|
||||
<_RootPackageJsonIsCopied Condition="'@(_RootPackageJsonFile)' != '' AND ( '%(_RootPackageJsonFile.CopyToOutputDirectory)' != '' OR '%(_RootPackageJsonFile.CopyToPublishDirectory)' != '' )">true</_RootPackageJsonIsCopied>
|
||||
</PropertyGroup>
|
||||
|
||||
<Warning
|
||||
Condition="'$(_RootPackageJsonIsCopied)' == 'true'"
|
||||
Code="ELECTRON009"
|
||||
Text="The project contains a root package.json that is configured to be copied to the output/publish directory.
|
||||
|
||||
File:
|
||||
$(MSBuildProjectDirectory)\package.json
|
||||
|
||||
MIGRATION REQUIRED:
|
||||
Root package.json must not be copied during build/publish.
|
||||
|
||||
HOW TO FIX:
|
||||
- Remove CopyToOutputDirectory / CopyToPublishDirectory metadata for package.json in your project file.
|
||||
|
||||
For more information, see: https://github.com/ElectronNET/Electron.NET/wiki/Migration-Checks#1-packagejson-not-allowed" />
|
||||
|
||||
</Target>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user