You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For anyone looking to make a contribution to the core Babel plugin, this is a small self-contained task.
Background
By default, when runtimeInjection is true, the function inject styles at runtime is imported as the default import from '@stylexjs/stylex/lib/stylex-inject'.
A recent change has added support for string and objects to be used as the value of runtimeInjection as well.
A string is used as the alternate import source for the inject function.
An object of the form {from: string, as: string} can be used for a named import from a custom source.
Current behaviour
Today, any custom import source for the inject function is used as a literal string. This doesn't work well when relative file paths are needed which will be different in each file in a project.
Expected Change
The StateManager class should be updated to detect relative or absolute paths and automatically generate the relative paths necessary from the file being transformed.
Here are the steps involved:
If the file is a relative file path. (Starts with ./ or ../)
Convert to an absolute file path by path.join with the rootDir passed in.
Update the get runtimeInjection() getter function in state-manager.js to automatically convert any absolute file paths to relative file paths from the current file.
NOTE: Absolute file paths start with / on Unix systems, but may start with C:\\ on Windows.
Stretch Goal: The same fix should also be made for importSources.
The importSources option can also accept custom import paths. However, in this case, existing imports need to be verified as coming from a given location.
The text was updated successfully, but these errors were encountered:
nmn
changed the title
Handle absolute paths for alternate inject source
[Good First Issue] Handle absolute paths for alternate inject source
Dec 19, 2023
@necolas This is for consistency with the importSources config option. I didn't actually imagine a custom function, just a custom import path. E.g., if stylex is an indirect dependency and another package is forwarding the StyleX implementations.
Shouldn't the compiler-inserted-code always point to the stylex package's inject module though? The importSources is for source code imports rather than code inserted by the compiler
A relatively easy task to get started
For anyone looking to make a contribution to the core Babel plugin, this is a small self-contained task.
Background
By default, when
runtimeInjection
istrue
, the function inject styles at runtime is imported as the default import from'@stylexjs/stylex/lib/stylex-inject'
.A recent change has added support for string and objects to be used as the value of
runtimeInjection
as well.{from: string, as: string}
can be used for a named import from a custom source.Current behaviour
Today, any custom import source for the inject function is used as a literal string. This doesn't work well when relative file paths are needed which will be different in each file in a project.
Expected Change
The
StateManager
class should be updated to detect relative or absolute paths and automatically generate the relative paths necessary from the file being transformed.Here are the steps involved:
./
or../
)path.join
with therootDir
passed in.get runtimeInjection()
getter function instate-manager.js
to automatically convert any absolute file paths to relative file paths from the current file./
on Unix systems, but may start withC:\\
on Windows.Stretch Goal: The same fix should also be made for
importSources
.The
importSources
option can also accept custom import paths. However, in this case, existing imports need to be verified as coming from a given location.The text was updated successfully, but these errors were encountered: