What
A publish can delete supporting files as well as add them, so an update no longer means re-listing everything you want to keep. Pass a removeFiles list of paths, or set a path to null in the map form of files, and those files are dropped from the artifact's next version while every file you left out stays published as it was.
Details
- The permission prompt counts the deletions as "removing N file(s) from its current version", and appends "(its other published files stay)" when only some of the artifact's files are going.
- Removal is refused when the publish would create a new artifact rather than update an existing one, since there is nothing yet to remove from.
- Removed names are resolved and checked to sit inside the artifact's
files/directory before being unlinked, and are recorded in the publishedmanifest.jsonunder a newremovedkey. - Publish arguments also accept
liveFiles, new in this build;files,removeFilesandliveFileseach count as a content-bearing update on their own. - The local publishing stub used during development no longer wipes the whole
filesdirectory on each publish, so unlisted files persist instead of vanishing. - The defence against symlinks pointing outside the artifact now walks every parent directory up to the artifact root instead of checking only the immediate parent, and a file that fails the check is skipped and logged rather than aborting the whole publish.
- If the account does not have multi-file publishing, the refusal now states plainly that nothing was published or removed and the artifact is unchanged.
- Publish telemetry gained a count of removed files.
Evidence
artifact stub: skipping removal of , `A null entry in files removes a file from an existing artifact, files left out of the map are kept and null removes that path`
Strings lifted out of the shipped bundle, so the claim above can be checked against them.
Names in the bundleremoveFiles