Skip to content

Preserve default.project.json During Package Installation #82

Description

@soyuta

I'm currently testing a pre-release build of pesde 0.8.

In pesde 0.8, hook scripts such as roblox_sync_config_generator have been removed.
As a result, users can no longer generate their own default.project.json.

default.project.json is currently excluded and is also automatically omitted when dependencies are installed.

Originally, this was intended to prevent a dependency package's Roblox hierarchy from conflicting with pesde, for example, by accidentally defining a DataModel.
and to avoid requiring every user to write their own default.project.json

However, now that hook scripts are gone, I'm not sure whether default.project.json should still be excluded during dependency installation.

From a Git submodule and Wally perspective, a package's default.project.json describes how that package should appear in Roblox.
It also allows package authors to configure options such as emitLegacyScripts or exclude specific files, making it a useful part of the package itself.

This is especially relevant in pesde 0.8, where includes and build_files have been removed.
When a project containing an installed package is built with Rojo, every file in that package will now be included.
As a result, any files that are not explicitly excluded (such as documentation, .txt, .toml, or .json files) will be exposed as StringValue or ModuleScript, which does not fit well with the Roblox ecosystem.

For packages targeting both Luau and Roblox, there may also be modules that are intended for Luau only and should not be included in the Roblox build. In such cases, package authors may need to use Rojo options such as globIgnorePaths.

Additionally, Rojo has supported syncRules since version 7.5.0.
These rules control how files are transformed during synchronization, and the feature may become even more powerful as Rojo continues to evolve.
syncRules are particularly useful for handling custom file extensions that would otherwise require complex or repetitive Rojo configuration.

For example, if a package wants to distribute a default.project.json that uses syncRules, consumers currently have to duplicate the same configuration in their project's root default.project.json.

Rather than removing the possibility of creating a package that is incompatible with pesde because of an incorrectly written default.project.json, I think it would be better to respect the extensibility that default.project.json provides.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions