diff --git a/src/Fable.AST/Fable.AST.fsproj b/src/Fable.AST/Fable.AST.fsproj
index 5c56859ade..6e5ac9afa9 100644
--- a/src/Fable.AST/Fable.AST.fsproj
+++ b/src/Fable.AST/Fable.AST.fsproj
@@ -4,12 +4,17 @@
true
Fable AST
netstandard2.0
- true
- 4.5.0
+ true
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
diff --git a/src/Fable.Build/Fable.Build.fsproj b/src/Fable.Build/Fable.Build.fsproj
index b7bd5294d8..ca01f74a1b 100644
--- a/src/Fable.Build/Fable.Build.fsproj
+++ b/src/Fable.Build/Fable.Build.fsproj
@@ -6,11 +6,6 @@
-
-
-
-
-
@@ -44,6 +39,7 @@
+
diff --git a/src/Fable.Build/Publish.fs b/src/Fable.Build/Publish.fs
index a709d44c37..24e1ea23cd 100644
--- a/src/Fable.Build/Publish.fs
+++ b/src/Fable.Build/Publish.fs
@@ -6,6 +6,10 @@ open System.Text.RegularExpressions
open Build.FableLibrary
open System
open Build.Workspace
+open EasyBuild.Tools.DotNet
+open EasyBuild.Tools.Changelog
+open EasyBuild.Tools.PackageJson
+open EasyBuild.Tools.Npm
let updateLibraryVersionInFableTransforms
(compilerVersion: string)
@@ -52,67 +56,35 @@ let private publishNuget (fsprojDir: string) (noSymbols: bool) =
if Array.length fsprojFiles <> 1 then
failwithf $"Expected to find exactly one fsproj file in %s{fsprojDir}"
- let fsprojPath = fsprojFiles[0]
- let fsprojContent = File.ReadAllText fsprojPath
- let changelogPath = Path.Combine(fsprojDir, "CHANGELOG.md")
- let lastChangelogVersion = Changelog.getLastVersion changelogPath
- let lastVersion = lastChangelogVersion |> fun v -> v.Version.ToString()
-
- let lastVersionBody = ChangelogParser.Version.bodyAsMarkdown lastChangelogVersion
-
- printfn $"Publishing: %s{fsprojDir}"
-
let nugetKey = Environment.GetEnvironmentVariable("FABLE_NUGET_KEY")
if isNull nugetKey then
failwithf $"Missing FABLE_NUGET_KEY environment variable"
- if Fsproj.needPublishing fsprojContent lastVersion then
- let updatedFsprojContent =
- fsprojContent
- |> Fsproj.replaceVersion lastVersion
- |> Fsproj.replacePackageReleaseNotes lastVersionBody
+ printfn $"Publishing: %s{fsprojDir}"
- File.WriteAllText(fsprojPath, updatedFsprojContent)
- let nupkgPath = Dotnet.pack fsprojDir
- Dotnet.Nuget.push (nupkgPath, nugetKey, noSymbols = noSymbols)
- printfn $"Published!"
- else
- printfn $"Already up-to-date, skipping..."
+ let nupkgPath = DotNet.pack fsprojDir
+
+ // We skip duplicates because we might have already published the same version
+ // This is because we make an optimistic release and delegate the version set to EasyBuild.
+ DotNet.nugetPush (nupkgPath, apiKey = nugetKey, noSymbols = noSymbols, skipDuplicate = true)
let private publishNpm (projectDir: string) =
- let packageJsonPath = Path.Combine(projectDir, "package.json")
- let packageJsonContent = File.ReadAllText(packageJsonPath)
- let changelogPath = Path.Combine(projectDir, "CHANGELOG.md")
+ let packageJsonFile = Path.Combine(projectDir, "package.json") |> FileInfo
let lastChangelogVersion =
- Changelog.getLastVersion changelogPath |> fun v -> v.Version.ToString()
-
- printfn $"Publishing: %s{projectDir}"
+ Path.Combine(projectDir, "CHANGELOG.md")
+ |> FileInfo
+ |> Changelog.findLastVersion
- if Npm.needPublishing packageJsonContent lastChangelogVersion then
- let updatedPackageJsonContent =
- Npm.replaceVersion packageJsonContent lastChangelogVersion
+ PackageJson.replaceVersion (packageJsonFile, lastChangelogVersion)
- File.WriteAllText(packageJsonPath, updatedPackageJsonContent)
+ if PackageJson.needPublishing packageJsonFile then
Npm.publish projectDir
printfn $"Published!"
else
printfn $"Already up-to-date, skipping..."
-let private updateFableLibraryTsPackageJsonVersion () =
- let packageJsonPath = Path.Combine(ProjectDir.fable_library_ts, "package.json")
- let packageJsonContent = File.ReadAllText(packageJsonPath)
- let changelogPath = Path.Combine(ProjectDir.fable_library_ts, "CHANGELOG.md")
-
- let lastChangelogVersion =
- Changelog.getLastVersion changelogPath |> fun v -> v.Version.ToString()
-
- let updatedPackageJsonContent =
- Npm.replaceVersion packageJsonContent lastChangelogVersion
-
- File.WriteAllText(packageJsonPath, updatedPackageJsonContent)
-
let handle (args: string list) =
// Build all the fable-libraries
BuildFableLibraryDart().Run()
@@ -130,21 +102,21 @@ let handle (args: string list) =
// We also want to update the original package.json if needed
// This is to keep the versions consistent across the project
- updateFableLibraryTsPackageJsonVersion ()
+ PackageJson.replaceVersion (PackageJson.fableLibraryTs, Changelog.fableLibraryTs |> Changelog.findLastVersion)
publishNpm ProjectDir.fable_metadata
// Update embedded version (both compiler and libraries)
- let changelogPath = Path.Combine(ProjectDir.fableCli, "CHANGELOG.md")
-
let compilerVersion =
- Changelog.getLastVersion changelogPath |> fun v -> v.Version.ToString()
+ Path.Combine(ProjectDir.fableCli, "CHANGELOG.md")
+ |> FileInfo
+ |> Changelog.findLastVersion
updateLibraryVersionInFableTransforms
compilerVersion
{|
- JavaScript = Npm.getVersionFromProjectDir ProjectDir.temp_fable_library_js
- TypeScript = Npm.getVersionFromProjectDir ProjectDir.temp_fable_library_ts
+ JavaScript = PackageJson.tempFableLibraryJs |> PackageJson.getVersion
+ TypeScript = PackageJson.tempFableLibraryTs |> PackageJson.getVersion
|}
publishNuget ProjectDir.fableAst false
diff --git a/src/Fable.Build/Utils/Changelog.fs b/src/Fable.Build/Utils/Changelog.fs
deleted file mode 100644
index 98cd5409d5..0000000000
--- a/src/Fable.Build/Utils/Changelog.fs
+++ /dev/null
@@ -1,23 +0,0 @@
-module Changelog
-
-open System.IO
-
-let getLastVersion (changelogPath: string) =
- let content = File.ReadAllText changelogPath
-
- match ChangelogParser.parse content with
- | Ok changelog ->
- changelog.Versions
- |> List.tryFind (fun v -> v.Title <> "Unreleased")
- |> Option.defaultWith (fun () ->
- failwithf
- $"""Failed to find version in changelog:
-File: %s{changelogPath}"""
- )
-
- | Error msg ->
- failwithf
- $"""Failed to parse changelog:
-File: %s{changelogPath}
-Error:
-%s{msg}"""
diff --git a/src/Fable.Build/Utils/ChangelogParser.fs b/src/Fable.Build/Utils/ChangelogParser.fs
deleted file mode 100644
index b6e10c9c80..0000000000
--- a/src/Fable.Build/Utils/ChangelogParser.fs
+++ /dev/null
@@ -1,415 +0,0 @@
-[]
-module ChangelogParser
-
-open Fable.Core
-open System
-open System.Text.RegularExpressions
-open Semver
-
-[]
-module Types =
-
- type CategoryBody =
- | ListItem of string
- | Text of string
- | Section of string
-
- type OtherItem =
- {
- ListItem: string
- TextBody: string option
- }
-
- type Categories =
- {
- Added: CategoryBody list
- Changed: CategoryBody list
- Deprecated: CategoryBody list
- Removed: CategoryBody list
- Improved: CategoryBody list
- Fixed: CategoryBody list
- Security: CategoryBody list
- Custom: Map
- }
-
- type Version =
- {
- Version: SemVersion
- Title: string
- Date: DateTime option
- Categories: Categories
- OtherItems: OtherItem list
- }
-
- type Changelog =
- {
- Title: string
- Description: string
- Versions: Version list
- }
-
- static member Empty =
- {
- Title = ""
- Description = ""
- Versions = []
- }
-
- []
- type Symbols =
- | Title of title: string
- | RawText of body: string
- | SectionHeader of title: string * version: string option * date: string option
- | SubSection of tag: string
- | SubSubSection of tag: string
- | ListItem of content: string
-
-
-[]
-module Lexer =
-
- []
- let private (|Match|_|) pattern input =
- let m = Regex.Match(input, pattern)
-
- if m.Success then
- ValueSome m
- else
- ValueNone
-
- []
- let private (|Title|_|) (input: string) =
- match input with
- | Match "^# ?[^#]" _ -> input.Substring(1).Trim() |> ValueSome
- | _ -> ValueNone
-
- []
- let private (|Semver|_|) (input: string) =
- match input with
- | Match "\\[?v?([\\w\\d.-]+\\.[\\w\\d.-]+[a-zA-Z0-9])\\]?" m -> ValueSome m.Groups.[1].Value
- | _ -> ValueNone
-
- []
- let private (|Date|_|) (input: string) =
- match input with
- | Match "(\\d{4}-\\d{2}-\\d{2})" m -> ValueSome m.Groups.[0].Value
- | _ -> ValueNone
-
- []
- let private (|Version|_|) (input: string) =
- match input with
- | Match "^##? ?[^#]" _ ->
- let version =
- match input with
- | Semver version -> Some version
- | _ -> None
-
- let date =
- match input with
- | Date date -> Some date
- | _ -> None
-
- let title = input.Substring(2).Trim()
-
- ValueSome(title, version, date)
-
- | _ -> ValueNone
-
- []
- let private (|SubSection|_|) (input: string) =
- match input with
- | Match "^### ?[^#]" _ -> input.Substring(3).Trim() |> ValueSome
- | _ -> ValueNone
-
- []
- let private (|SubSubSection|_|) (input: string) =
- match input with
- | Match "^#### ?[^#]" _ -> input.Substring(4).Trim() |> ValueSome
- | _ -> ValueNone
-
- []
- let private (|ListItem|_|) (input: string) =
- match input with
- | Match "^[*-]" _ -> input.Substring(1).Trim() |> ValueSome
- | _ -> ValueNone
-
- let toSymbols (lines: string list) =
- lines
- |> List.map (
- function
- | Title title -> Symbols.Title title
- | Version(title, version, date) -> Symbols.SectionHeader(title, version, date)
- | SubSection tag -> Symbols.SubSection tag
- | SubSubSection tag -> Symbols.SubSubSection tag
- | ListItem content -> Symbols.ListItem content
- | rawText -> Symbols.RawText(rawText.TrimEnd())
- )
-
-[]
-module Transform =
-
- let rec private parseCategoryBody (symbols: Symbols list) (sectionContent: CategoryBody list) =
- match symbols with
- | Symbols.ListItem item :: tail ->
-
- parseCategoryBody tail (sectionContent @ [ CategoryBody.ListItem item ])
- // If this is the beginning of a text block
- | Symbols.RawText _ :: _ ->
- // Capture all the lines of the text block
- let textLines =
- symbols
- |> List.takeWhile (
- function
- | Symbols.RawText _ -> true
- | _ -> false
- )
-
- // Regroup everything into a single string
- let content =
- textLines
- |> List.map (
- function
- | Symbols.RawText text -> text
- | _ -> failwith "Should not happen the list has been filtered"
- )
- // Skip empty lines at the beginning
- |> List.skipWhile String.IsNullOrEmpty
- // Skip empty lines at the end
- |> List.rev
- |> List.skipWhile String.IsNullOrEmpty
- |> List.rev
- // Join the lines
- |> String.concat "\n"
-
- // Remove already handle symbols
- let rest = symbols |> List.skip textLines.Length
-
- // If details is an empty line don't store it
- if String.IsNullOrEmpty content then
- parseCategoryBody rest sectionContent
- else
- parseCategoryBody rest (sectionContent @ [ CategoryBody.Text content ])
-
- | Symbols.SubSubSection tag :: tail -> parseCategoryBody tail (sectionContent @ [ CategoryBody.Section tag ])
-
- // End of the Section, return the built content
- | _ -> symbols, sectionContent
-
- let rec private tryEatRawText (symbols: Symbols list) =
- match symbols with
- // If this is the beginning of a text block
- | Symbols.RawText _ :: _ ->
- // Capture all the lines of the text block
- let textLines =
- symbols
- |> List.takeWhile (
- function
- | Symbols.RawText _ -> true
- | _ -> false
- )
-
- // Regroup everything into a single string
- let content =
- textLines
- |> List.map (
- function
- | Symbols.RawText text -> text
- | _ -> failwith "Should not happen the list has been filtered"
- )
- // Skip empty lines at the beginning
- |> List.skipWhile String.IsNullOrEmpty
- // Skip empty lines at the end
- |> List.rev
- |> List.skipWhile String.IsNullOrEmpty
- |> List.rev
- // Join the lines
- |> String.concat "\n"
-
- // Remove already handle symbols
- let rest = symbols |> List.skip textLines.Length
-
- rest, Some content
- // End of the Section, return the built content
- | _ -> symbols, None
-
- let rec private parse (symbols: Symbols list) (changelog: Changelog) =
- match symbols with
- | Symbols.Title title :: tail ->
- if String.IsNullOrEmpty changelog.Title then
- { changelog with Title = title }
- else
- changelog
- |> parse tail
-
- | Symbols.SubSubSection _ :: tail ->
- // Should not happen here, it should be captured in the parseCategoryBody function
- parse tail changelog
-
- | Symbols.SectionHeader(title, version, date) :: tail ->
- let version =
- {
- Version =
- match version with
- | Some version -> SemVersion.Parse(version, SemVersionStyles.Strict)
- | None ->
- // If no version is provided, use a dummy version
- // This happens when handling the unreleased section
- SemVersion.Parse("0.0.0-Unreleased", SemVersionStyles.Strict)
- Title = title
- Date = date |> Option.map DateTime.Parse
- Categories =
- {
- Added = []
- Changed = []
- Deprecated = []
- Removed = []
- Improved = []
- Fixed = []
- Security = []
- Custom = Map.empty
- }
- OtherItems = []
- }
-
- parse tail { changelog with Versions = version :: changelog.Versions }
-
- | Symbols.SubSection tag :: tail ->
- let (unparsedSymbols, categoryBody) = parseCategoryBody tail []
-
- match changelog.Versions with
- | currentVersion :: otherVersions ->
- let updatedCategories =
- match tag.ToLower() with
- | "added" ->
- { currentVersion.Categories with Added = currentVersion.Categories.Added @ categoryBody }
- | "changed" ->
- { currentVersion.Categories with Changed = currentVersion.Categories.Changed @ categoryBody }
- | "deprecated" ->
- { currentVersion.Categories with
- Deprecated = currentVersion.Categories.Deprecated @ categoryBody
- }
- | "removed" ->
- { currentVersion.Categories with Removed = currentVersion.Categories.Removed @ categoryBody }
- | "improved" ->
- { currentVersion.Categories with Improved = currentVersion.Categories.Improved @ categoryBody }
- | "fixed" ->
- { currentVersion.Categories with Fixed = currentVersion.Categories.Fixed @ categoryBody }
- | "security" ->
- { currentVersion.Categories with Security = currentVersion.Categories.Security @ categoryBody }
- | unknown ->
- { currentVersion.Categories with
- Custom = currentVersion.Categories.Custom.Add(unknown, categoryBody)
- }
-
- let versions =
- { currentVersion with Categories = updatedCategories } :: otherVersions
-
- parse unparsedSymbols { changelog with Versions = versions }
- | _ -> Error "A category should always be under a version"
-
- | Symbols.RawText _ :: _ ->
- // Capture all the lines of the text block
- let textLines =
- symbols
- |> List.takeWhile (
- function
- | Symbols.RawText _ -> true
- | _ -> false
- )
-
- // Regroup everything into a single string
- let content =
- textLines
- |> List.map (
- function
- | Symbols.RawText text -> text
- | _ -> failwith "Should not happen the list has been filtered"
- )
- |> String.concat "\n"
-
- // Remove already handle symbols
- let rest = symbols |> List.skip textLines.Length
-
- parse rest { changelog with Description = content }
-
- | Symbols.ListItem text :: tail ->
- match changelog.Versions with
- | currentVersion :: otherVersions ->
- let (unparsedSymbols, textBody) = tryEatRawText tail
-
- let otherItemItem =
- {
- ListItem = text
- TextBody = textBody
- }
-
- let versions =
- { currentVersion with OtherItems = currentVersion.OtherItems @ [ otherItemItem ] }
- :: otherVersions
-
- parse unparsedSymbols { changelog with Versions = versions }
- | _ ->
-
- sprintf
- "A list item should always be under version. The following list item made the parser failed:\n\n%s\n"
- text
- |> Error
-
- | [] -> Ok { changelog with Versions = changelog.Versions |> List.rev }
-
- let fromSymbols (symbols: Symbols list) = parse symbols Changelog.Empty
-
-let parse (changelogContent: string) =
- changelogContent.Split([| '\r'; '\n' |])
- |> Array.toList
- |> Lexer.toSymbols
- |> Transform.fromSymbols
-
-module Version =
-
- let bodyAsMarkdown (version: Types.Version) =
- let renderCategoryBody (categoryLabel: string) (items: CategoryBody list) =
- if items.IsEmpty then
- ""
- else
- let categoryBody =
- items
- |> List.map (
- function
- | ListItem item -> sprintf "- %s" item
- | Text text -> text
- | Section section -> sprintf "\n### %s\n" section
- )
- |> String.concat "\n"
-
- $"## {categoryLabel}\n\n{categoryBody}\n\n"
-
- let mutable body = ""
-
- body <- body + renderCategoryBody "Added" version.Categories.Added
- body <- body + renderCategoryBody "Changed" version.Categories.Changed
-
- body <- body + renderCategoryBody "Deprecated" version.Categories.Deprecated
-
- body <- body + renderCategoryBody "Removed" version.Categories.Removed
- body <- body + renderCategoryBody "Improved" version.Categories.Improved
- body <- body + renderCategoryBody "Fixed" version.Categories.Fixed
- body <- body + renderCategoryBody "Security" version.Categories.Security
-
- for unkownCategory in version.Categories.Custom.Keys do
- let items = version.Categories.Custom.[unkownCategory]
- body <- body + renderCategoryBody unkownCategory items
-
- if not version.OtherItems.IsEmpty then
- body <- body + "\n"
-
- for otherItems in version.OtherItems do
- body <- body + sprintf "- %s" otherItems.ListItem
-
- match otherItems.TextBody with
- | Some textBody -> body <- body + sprintf "\n%s" textBody
- | None -> ()
-
- body <- body + "\n"
-
- body
diff --git a/src/Fable.Build/Utils/Fsproj.fs b/src/Fable.Build/Utils/Fsproj.fs
deleted file mode 100644
index 8520c08986..0000000000
--- a/src/Fable.Build/Utils/Fsproj.fs
+++ /dev/null
@@ -1,38 +0,0 @@
-module Fsproj
-
-open System.IO
-open SimpleExec
-open System.Text.RegularExpressions
-
-module Regex =
-
- []
- let VERSION = "(?'version'.*?)"
-
-let tryGetVersion (fsprojContent: string) =
- let m = Regex.Match(fsprojContent, Regex.VERSION)
-
- if m.Success then
- Some m.Groups.["version"].Value
- else
- None
-
-let needPublishing (fsprojContent: string) (versionToCheck: string) =
- match tryGetVersion fsprojContent with
- | Some currentVersion -> currentVersion <> versionToCheck
- | None -> failwith "Could not find ... in fsproj file"
-
-let replaceVersion (version: string) (fsprojContent: string) =
- Regex.Replace(fsprojContent, Regex.VERSION, (fun (m: Match) -> $"{version}"))
-
-let replacePackageReleaseNotes (releaseNotes: string) (fsprojContent: string) =
- Regex.Replace(
- fsprojContent,
- ".*?",
- (fun (m: Match) ->
- let releaseNotes = releaseNotes.Replace("<", "<").Replace(">", ">")
-
- $"{releaseNotes}"
- ),
- RegexOptions.Singleline
- )
diff --git a/src/Fable.Build/Utils/Npm.fs b/src/Fable.Build/Utils/Npm.fs
deleted file mode 100644
index c3bdad9791..0000000000
--- a/src/Fable.Build/Utils/Npm.fs
+++ /dev/null
@@ -1,50 +0,0 @@
-namespace Build.Utils
-
-open Thoth.Json.Net
-open System.IO
-open SimpleExec
-open System.Text.RegularExpressions
-
-module Regex =
-
- []
- let VERSION = "\"version\":\s*\"(?'version'.*)\""
-
-module Npm =
-
- let getVersion (packageJsonContent: string) =
- let versionDecoder = Decode.field "version" Decode.string
-
- match Decode.fromString versionDecoder packageJsonContent with
- | Ok version -> version
- | Error msg ->
- failwithf
- $"""Failed to find version in package.json
-
-Error:
-%s{msg}"""
-
- let getVersionFromProjectDir (projectDir: string) =
- let packageJsonPath = Path.Combine(projectDir, "package.json")
- let packageJsonContent = File.ReadAllText packageJsonPath
-
- getVersion packageJsonContent
-
- let tryGetVersion (packageJsonContent: string) (version: string) =
- let m = Regex.Match(packageJsonContent, Regex.VERSION)
-
- if m.Success then
- Some m.Groups.["version"].Value
- else
- None
-
- let needPublishing (packageJsonContent: string) (versionToCheck: string) =
- let version = getVersion packageJsonContent
-
- version <> versionToCheck
-
- let publish (projectDir: string) =
- Command.Run("npm", "publish --access public", workingDirectory = projectDir)
-
- let replaceVersion (packageJsonContent: string) (version: string) =
- Regex.Replace(packageJsonContent, Regex.VERSION, (fun (m: Match) -> $"\"version\": \"{version}\""))
diff --git a/src/Fable.Build/Utils/Nuget.fs b/src/Fable.Build/Utils/Nuget.fs
deleted file mode 100644
index c1b742ce6a..0000000000
--- a/src/Fable.Build/Utils/Nuget.fs
+++ /dev/null
@@ -1,41 +0,0 @@
-namespace Build.Utils
-
-open SimpleExec
-open System.Text.RegularExpressions
-open BlackFox.CommandLine
-
-module Dotnet =
-
- type Nuget =
-
- static member push(nupkgPath: string, nugetKey: string, ?noSymbols: bool) =
- let noSymbols = defaultArg noSymbols false
-
- Command.Run(
- "dotnet",
- CmdLine.empty
- |> CmdLine.appendRaw "nuget"
- |> CmdLine.appendRaw "push"
- |> CmdLine.appendRaw nupkgPath
- |> CmdLine.appendPrefix "-s" "https://api.nuget.org/v3/index.json"
- |> CmdLine.appendPrefix "-k" nugetKey
- |> CmdLine.appendIf noSymbols "--no-symbols"
- |> CmdLine.toString
- )
-
- let pack (projectDir: string) =
- let struct (standardOutput, _) =
- Command.ReadAsync("dotnet", "pack -c Release", workingDirectory = projectDir)
- |> Async.AwaitTask
- |> Async.RunSynchronously
-
- let m =
- Regex.Match(standardOutput, "Successfully created package '(?'nupkgPath'.*\.nupkg)'")
-
- if m.Success then
- m.Groups.["nupkgPath"].Value
- else
- failwithf
- $"""Failed to find nupkg path in output:
-Output:
-{standardOutput}"""
diff --git a/src/Fable.Build/Workspace.fs b/src/Fable.Build/Workspace.fs
index eaa9eebed1..1fb9858a8c 100644
--- a/src/Fable.Build/Workspace.fs
+++ b/src/Fable.Build/Workspace.fs
@@ -27,8 +27,19 @@ module Fsproj =
module Changelog =
- let fableCLi = Path.Combine(ProjectDir.fableCli, "CHANGELOG.md")
- let fableCore = Path.Combine(ProjectDir.fableCore, "CHANGELOG.md")
+ let fableLibraryTs =
+ Path.Combine(ProjectDir.fable_library_ts, "CHANGELOG.md") |> FileInfo
+
+module PackageJson =
+
+ let fableLibraryTs =
+ Path.Combine(ProjectDir.fable_library_ts, "package.json") |> FileInfo
+
+ let tempFableLibraryTs =
+ Path.Combine(ProjectDir.temp_fable_library_ts, "package.json") |> FileInfo
+
+ let tempFableLibraryJs =
+ Path.Combine(ProjectDir.temp_fable_library_js, "package.json") |> FileInfo
module FableLibrary =
diff --git a/src/Fable.Cli/Fable.Cli.fsproj b/src/Fable.Cli/Fable.Cli.fsproj
index 5b04674224..4af64b050c 100644
--- a/src/Fable.Cli/Fable.Cli.fsproj
+++ b/src/Fable.Cli/Fable.Cli.fsproj
@@ -4,12 +4,6 @@
true
Exe
net8.0
- 5.0.0-alpha.2
- ## Fixed
-
-- [All] Allow Fable 5 to be used with Fable 4 plugins (@ncave)
-
-
Major
false
@@ -49,6 +43,10 @@
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
diff --git a/src/Fable.Compiler/Fable.Compiler.fsproj b/src/Fable.Compiler/Fable.Compiler.fsproj
index 99b6e30c91..6740a18d41 100644
--- a/src/Fable.Compiler/Fable.Compiler.fsproj
+++ b/src/Fable.Compiler/Fable.Compiler.fsproj
@@ -6,12 +6,6 @@
true
true
Fable.Compiler
- 5.0.0-alpha.2
- ## Fixed
-
-- [All] Allow Fable 5 to be used with Fable 4 plugins (@ncave)
-
-
embedded
@@ -24,8 +18,8 @@
-
-
+
+
@@ -40,6 +34,10 @@
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
diff --git a/src/Fable.Core/Fable.Core.fsproj b/src/Fable.Core/Fable.Core.fsproj
index 6c68c417f4..2ac7407c39 100644
--- a/src/Fable.Core/Fable.Core.fsproj
+++ b/src/Fable.Core/Fable.Core.fsproj
@@ -5,7 +5,6 @@
Fable Core Library
netstandard2.0
true
- 4.3.0
true
@@ -26,4 +25,10 @@
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
diff --git a/src/Fable.PublishUtils/Fable.PublishUtils.fsproj b/src/Fable.PublishUtils/Fable.PublishUtils.fsproj
index 80c363771d..0651aba406 100644
--- a/src/Fable.PublishUtils/Fable.PublishUtils.fsproj
+++ b/src/Fable.PublishUtils/Fable.PublishUtils.fsproj
@@ -4,9 +4,14 @@
net8.0
Major
true
- 2.4.0
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+