Skip to content

[Meta] Fix developer experience for Apple M1/arm64 developers #6442

@cee-chen

Description

@cee-chen

We currently have a frustrating series of roadblocks for developers on M1/silicon devices that require them to perform several workarounds such as downgrading Node to v14 and running Terminal in Rosetta mode in order to work on EUI.

The primary culprit of these issues is node-sass (sass/node-sass#3033). There have also been several reports of nodegit being an issue, which I intend to investigate after node-sass has been removed.

Steps required to move EUI off of node-sass:

  • Replacing Sass dependencies that depend on node-sass:
    • sass-extract (Remove sass-extract dependency #6443)
      • My preferred approach would be to stop extracting dynamic variables from Sass totally. Since Sass is essentially in deprecation mode and we are no longer adding new Sass variables whatsoever, there should be no downside to simply statically comitting our .json and .json.d.ts files to source control until we figure out how to transition Kibana over smoothly.
    • sass-vars-to-js-loader (Remove sass-vars-to-js-loader dependency #6444)
    • sass-lint and sass-lint-auto-fix (Replace sass-lint dependency with stylelint #6470)
      • We should look into replacing this with stylelint (as sass-lint is deprecated in any case), which additionally supports linting CSS-in-JS
  • Replacing node-sass with sass (aka dart-sass) (Remove node-sass in favor of dart sass #6474)
    • If performance is a major issue for dart-sass, we can consider the following alternatives:
      • Using sass-embedded
      • Trying what Kibana does and installing node-sass from a prebuilt version that they host, that supports arm64

Steps required to move EUI off of nodegit:

nodegit currently has multiple alpha releases, the latest of which appear to address ARM64 issues: https://github.com/nodegit/nodegit/blob/master/CHANGELOG.md

We should try upgrading to the latest alpha release to see if that resolves arm64 errors. If not, we can alternatively consider:

  • using exec instead to call git CLI commands
  • using bash scripts instead of node.js

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions