| #
1a3a1db5 |
| 20-Sep-2023 |
Evan Bacon <[email protected]> |
Update tsconfigs to node 18 (current LTS) (#24471)
# Why
Expo supports Node.js LTS, this is currently Node 18. This PR updates
from 14 to 18.
<!--
Please describe the motivation for this PR,
Update tsconfigs to node 18 (current LTS) (#24471)
# Why
Expo supports Node.js LTS, this is currently Node 18. This PR updates
from 14 to 18.
<!--
Please describe the motivation for this PR, and link to relevant GitHub
issues, forums posts, or feature requests.
-->
---------
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| #
9b1b5ec6 |
| 09-Sep-2023 |
Evan Bacon <[email protected]> |
Add support for bun as a package manager. (#24344)
# Why
- Follow up for https://github.com/expo/expo/pull/24168 adding support
for install, prebuild, etc. to use bun as well.
---------
Co
Add support for bun as a package manager. (#24344)
# Why
- Follow up for https://github.com/expo/expo/pull/24168 adding support
for install, prebuild, etc. to use bun as well.
---------
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| #
8a424beb |
| 11-Aug-2023 |
James Ide <[email protected]> |
[lint] Upgrade to Prettier v3, typescript-eslint to v6 (#23544)
Why
---
Prettier 3 is out. Add support for it with this linter config.
**Note for reviewer:** the first commit is the one with th
[lint] Upgrade to Prettier v3, typescript-eslint to v6 (#23544)
Why
---
Prettier 3 is out. Add support for it with this linter config.
**Note for reviewer:** the first commit is the one with the actual
changes. The rest of this PR are changes to get the linter passing
(mostly autofix).
How
---
Update eslint-config-prettier and eslint-plugin-prettier. To address
deprecation warnings, also update typescript-eslint/parser and
typescript-eslint/eslint-plugin.
Because of an update to typescript-eslint/parser, we need to suppress
deprecation warnings (documented in a comment).
Regenerated test snapshots. Due to the upgraded dependencies, typecasts
and optional chaining are now auto-fixable by lint. This converts
warnings into autofixes.
Test Plan
---
`yarn test` in the linter config. Run `expotools check --all --fix-lint
--no-build --no-test --no-uniformity-check` to try this config on the
whole repo.
---------
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| #
6fb32ddd |
| 13-Jun-2023 |
Keith Kurak <[email protected]> |
[cli] Add dependency exclusion to `npx expo install` (#22736)
# Why
Fulfills
https://linear.app/expo/issue/ENG-8564/add-dependency-exclusion-to-npx-expo-install.
Developers will be able to suppre
[cli] Add dependency exclusion to `npx expo install` (#22736)
# Why
Fulfills
https://linear.app/expo/issue/ENG-8564/add-dependency-exclusion-to-npx-expo-install.
Developers will be able to suppress warnings from `npx expo install
--check` via a package.json config, and thus suppress doctor warnings
when they intentionally choose to install a different version,
especially when using dev builds and not needing to stick to the Expo
Go- bundled version.
# How
`npx expo install --check|fix` reads from `expo.install.exclude` if it's
available, and, if one of the packages it thinks it should fix is in
that list, it will skip asking/ fixing it. If you run `EXPO_DEBUG=1 npx
expo install --check`, the packages whose checks were actually skipped
will be listed in debug output; otherwise there are no warnings or
messages about the excluded packages.
The package.json configuration verbiage is intended to be similar to the
[autolinking
config](https://docs.expo.dev/modules/autolinking/#exclude).
~~It also seemed appropriate that `npx expo install` should behave
differently if you try to install an excluded package, so someone
doesn't come along and write over a version that another developer
determined was good and thus applied the override for. Currently, it
aborts if any of the packages are in the exclusion list. I could see
doing a warning and skipping the affected packages instead, but the
command outright failing is pretty hard to miss.~~
`npx expo install` now installs excluded packages with the latest
version, just like a package without a specified native version. It will
add a note describing what it's doing and why.
# Test Plan
- [x] test without `expo.install.exclude` (works the same)
- [x] test with empty exclusion list (works the same)
- [x] test with exclusions that aren't actual dependencies (works the
same)
- [x] test `expo install --fix|check` when excluding an actual
dependency (skips it)
- [x] test with `EXPO_DEBUG=1` (lists excluded packages)
- [x] test `expo install [package]` with exclusions (installs latest
with notes)
- [x] test `expo install [package]` without exclusions (proceeds as it
normally does)
## Output
`npx expo install --check`, showing note that it is skipping checking
packages in the exclude list:
<img width="884" alt="image"
src="https://github.com/expo/expo/assets/8053974/30cef729-af18-44cb-98ef-11fc9729ae3d">
Additional debug output for `EXPO_DEBUG=1 npx expo install --check`:
<img width="904" alt="image"
src="https://github.com/expo/expo/assets/8053974/9096a939-066c-431b-a467-6d3d70ef448d">
`expo install <package>` with exclusions:
<img width="932" alt="image"
src="https://github.com/expo/expo/assets/8053974/d51e9e5a-cc59-4aa4-9cb6-4a2294b01ccc">
# Checklist
<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->
- [x] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [x] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [x] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
---------
Co-authored-by: Brent Vatne <[email protected]>
show more ...
|
| #
6a750d06 |
| 08-Apr-2023 |
Evan Bacon <[email protected]> |
feat(cli, metro-config): environment variable support (#21983)
# Why
- It's nice to be able to use uncommitted values in your app, based on
the environment. This feels very familiar to web devel
feat(cli, metro-config): environment variable support (#21983)
# Why
- It's nice to be able to use uncommitted values in your app, based on
the environment. This feels very familiar to web developers.
- Values that are prefixed with `EXPO_PUBLIC_` will be inlined in the
bundle when bundling normally (e.g. not for Node.js).
- `.env` files are loaded into memory and applied to the process during
a run. This also means that they're available in `app.config.js`.
- During development-only, environment variables are exposed on the
`process.env` object (non-enumerable) to ensure they're available
between fast refresh updates.
<!--
Please describe the motivation for this PR, and link to relevant GitHub
issues, forums posts, or feature requests.
-->
# How
- Create new package `@expo/env` which is used to hydrate env variables
in a unified way. I plan to open another PR in `eas-cli` which uses this
package to fill in environment variables before uploading. NOTE:
environment variables that are defined in eas.json are not available in
Expo CLI when building locally, but are available in the cloud since
they'll be on the process, this means they effectively emulate
`.env.production`.
- Update templates to gitignore local env files.
- Add basic documentation to the versioned metro guide (more to come).
<!--
How did you build this feature or fix this bug and why?
-->
# Test Plan
- [ ] E2E rendering test
- [ ] E2E Node.js rendering test
- [x] Unit tests for serializer
- [x] Tests for env package
<!--
Please describe how you tested this change and how a reviewer could
reproduce your test, especially if this PR does not include automated
tests! If possible, please also provide terminal output and/or
screenshots demonstrating your test/reproduction.
-->
# Checklist
<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->
- [ ] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [ ] This diff will work correctly for `expo prebuild` & EAS Build (eg:
updated a module plugin).
show more ...
|
| #
2dd43328 |
| 24-Feb-2023 |
Evan Bacon <[email protected]> |
feat(cli)!: set node and babel env for CLI commands (#21337)
# Why
- User's may want to dynamically configure Metro or their Expo Config
file to work differently when bundling for production env
feat(cli)!: set node and babel env for CLI commands (#21337)
# Why
- User's may want to dynamically configure Metro or their Expo Config
file to work differently when bundling for production environments, they
can now do this by utilizing the standard `NODE_ENV` environment
variable. We've been doing this with Webpack since it was introduced.
<!--
Please describe the motivation for this PR, and link to relevant GitHub
issues, forums posts, or feature requests.
-->
# How
- Set `NODE_ENV` and `BABEL_ENV` environment variables to `development`
or `production` in `start`, `export`, `customize`, `install`, `run:ios`,
`run:android`, `config`, `prebuild` commands based on the input mode.
- This can be overwritten by setting `NODE_ENV` and `BABEL_ENV` manually
before running. `BABEL_ENV` will be set to `NODE_ENV` if defined.
- Most commands can safely default to assuming `development`.
- Only thing that this doesn't cover is `npx react-native bundle` and
`npx react-native start` (building from Xcode/Android Studio). We'll
need to change these commands in the future but it shouldn't be blocking
for this PR.
<!--
How did you build this feature or fix this bug and why?
-->
# Test Plan
<!--
Please describe how you tested this change and how a reviewer could
reproduce your test, especially if this PR does not include automated
tests! If possible, please also provide terminal output and/or
screenshots demonstrating your test/reproduction.
-->
# Checklist
<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->
- [ ] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [ ] This diff will work correctly for `expo prebuild` & EAS Build (eg:
updated a module plugin).
---------
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| #
8d3f3824 |
| 13-Feb-2023 |
Cedric van Putten <[email protected]> |
refactor(package-manager)!: extend the API and provide access to spawn child (#18576)
# Why
Fixes ENG-7545
This proposal PR changes the API of the (node) package managers, with
the goal of:
refactor(package-manager)!: extend the API and provide access to spawn child (#18576)
# Why
Fixes ENG-7545
This proposal PR changes the API of the (node) package managers, with
the goal of:
- Having the right API options to install/remove packages to
`dependencies`/`devDependencies`/global deps
- Having access to the actual `spawnAsync` child, to pipe logs into
different systems (for example in EAS build)
- Allowing us to fix a couple of annoying DX issues (see follow up PRs)
> This is further outlined in the Package Manager API proposal.
Before merging this one, we need to merge these other PRs to not-break
`main`. Any feedback on the proposal is welcome, especially while in
draft.
- https://github.com/expo/expo/pull/19343
- https://github.com/expo/expo/pull/19344
# How
See Package Manager API proposal.
# Test Plan
> These changes are backward incompatible and require a new version
update.
This change also allowed us to implement the following fixes (all
stacked PRs):
- https://github.com/expo/expo/pull/19343
- https://github.com/expo/expo/pull/19344
- https://github.com/expo/expo/pull/19342
- https://github.com/expo/expo/pull/19340
- https://github.com/expo/expo/pull/19341
- https://github.com/expo/expo/pull/19764
- https://github.com/expo/expo/pull/19835
- https://github.com/expo/expo/pull/21189
# Checklist
<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->
- [x] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [ ] This diff will work correctly for `expo prebuild` & EAS Build (eg:
updated a module plugin).
show more ...
|
| #
0f1a896e |
| 30-Jun-2022 |
Kim Brandwijk <[email protected]> |
[cli] fix ignored existing plugins on expo install (#17936)
* [cli] fix ignored existing plugins on expo install
* docs: changelog
* remove default parameter value
|
| #
7b57a441 |
| 12-May-2022 |
Evan Bacon <[email protected]> |
feat(cli): bail out on missing required web packages (#17448)
* feat(cli): bail out on missing required web packages
* Update packages/@expo/cli/CHANGELOG.md
Co-authored-by: Expo Bot <34669131
feat(cli): bail out on missing required web packages (#17448)
* feat(cli): bail out on missing required web packages
* Update packages/@expo/cli/CHANGELOG.md
Co-authored-by: Expo Bot <[email protected]>
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| #
6caf5755 |
| 12-May-2022 |
Evan Bacon <[email protected]> |
feat(cli): add `--pnpm` option to `install` and `prebuild` command (#17366)
* feat(cli): add `--pnpm` option to `install` command
* Added pnpm support to prebuild command
* Update resolveOptio
feat(cli): add `--pnpm` option to `install` and `prebuild` command (#17366)
* feat(cli): add `--pnpm` option to `install` command
* Added pnpm support to prebuild command
* Update resolveOptions-test.ts
* Update packages/@expo/cli/CHANGELOG.md
Co-authored-by: Expo Bot <[email protected]>
* Update resolveOptions-test.ts
* update help
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| #
c94ad8a2 |
| 15-Apr-2022 |
Evan Bacon <[email protected]> |
feat(cli): add `--check` and `--fix` flags to install command (#17048)
* feat(cli): add `--check` and `--fix` flags to install command
Add a flag `--check` which runs the doctor check against the
feat(cli): add `--check` and `--fix` flags to install command (#17048)
* feat(cli): add `--check` and `--fix` flags to install command
Add a flag `--check` which runs the doctor check against the installed packages, then prompt to install the corrected packages. If the command is run in CI then no prompt will be given and the process with exit with non-zero exit code (1).
Additionally adds the `--fix` flag which skips the prompt and exiting behavior. This can be used in CI to naively ensure packages are always correct: `npx expo install --fix`.
In this logical scenario `--fix` acts as a more privileged version of `--check`. Meaning the flags should never be used together. I also considered the inverse structure `--fix --dry-run` which would act the same as `--check` but would allow for coherency in the arguments since you would have less of a chance to provide bad arguments.
I opted for the `--check` flag for this initial commit because it allows for the interactive prompt to fix when run outside of CI, and acts as expected in CI. Whereas `--dry-run` exiting with non-zero seems unexpected as running without `--dry-run` would not exit with non-zero (unless for some unrelated error).
This feature also combines all three sources for known versions before doing validation, this means the check run during `start` will utilize the same sources as the install check.
In addition, I've also added `react-native`, `react`, `react-dom`, and `react-native-web` to the `bundledNativeModules.json` so the React versions are all checked as well.
The result is a unified validation system across the CLI.
This feature supersedes the `expo doctor --fix-dependencies` command, while adding the additional ability to check/fix only a certain set of packages, i.e. `npx expo install react-native --check`
* Update CHANGELOG.md
* skip installing when all dependencies are fine
* testing install check
* fix tests
* added install e2e tests
* Update CHANGELOG.md
* Update validateDependenciesVersions-test.ts
* Update packages/expo/CHANGELOG.md
Co-authored-by: Expo Bot <[email protected]>
* Update getMissingPackages-test.ts
* Update install-test.ts
* Update install-test.ts
* Update react-native
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| #
db1d7aad |
| 11-Apr-2022 |
Evan Bacon <[email protected]> |
fix(cli): web support and resolution (#16820)
* fix web support and resolution
* clean up dependency logic
* Update CHANGELOG.md
* Update packages/@expo/cli/CHANGELOG.md
Co-authored-by:
fix(cli): web support and resolution (#16820)
* fix web support and resolution
* clean up dependency logic
* Update CHANGELOG.md
* Update packages/@expo/cli/CHANGELOG.md
Co-authored-by: Expo Bot <[email protected]>
* lint fix
* Update getVersionedPackages.ts
* chore(cli): move timeout code to #16820
* Update getVersionedPackages.ts
* Update getVersionedPackages-test.ts
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| #
09bb6093 |
| 29-Mar-2022 |
Evan Bacon <[email protected]> |
feat(cli): add `npx expo install` command (#16756)
* feat: add `expo install` command
* test: improve test coverage
* chore: improved testing
* Updated e2e tests
* Update CHANGELOG.md
feat(cli): add `npx expo install` command (#16756)
* feat: add `expo install` command
* test: improve test coverage
* chore: improved testing
* Updated e2e tests
* Update CHANGELOG.md
* Update packages/@expo/cli/CHANGELOG.md
Co-authored-by: Expo Bot <[email protected]>
* Update getVersionedPackages.ts
* lint fix
* Update getVersionedPackages-test.ts
* Delete index-test.ts
* Update index-test.ts
* improve documentation
* Update args.ts
Co-authored-by: Expo Bot <[email protected]>
show more ...
|