WordPress/gutenberg

Testing: Add lint for Babel runtime dependency in transpiled packages

Open

#14.373 aperta il 11 mar 2019

Vedi su GitHub
 (1 commento) (4 reazioni) (0 assegnatari)JavaScript (3893 fork)batch import
Good First IssueNeeds Dev[Type] Automated Testing[Type] Task

Metriche repository

Star
 (9607 star)
Metriche merge PR
 (Merge medio 12g 18h) (509 PR mergiate in 30 g)

Descrizione

Each package transpiled using Babel is configured to apply the Babel runtime transform (source). Thus, the built output for any package is expected to contain references to the @babel/runtime module. For this reason, the package must explicitly define @babel/runtime as a dependency.

For any package which is transpiled using Babel, we should lint to ensure it also includes an explicit dependency on @babel/runtime.

Implementation:

  • A package can be determined as being subject to transpilation if its package.json includes a main reference to a build/ relative path.
    • Technically speaking, any package will be transpiled with Babel if it includes a src/ directory (source), but the main reference is a better indication that it's actually used (related)
  • I expect the best option for linting would be a rule from npm-package-json-lint requiring a specific dependency to be present, and for each exception package (the minority of cases), a package-specific .npmpackagejsonlintrc.json configuration override should disable the lint rule.
    • The lint rule should be applied only in the Gutenberg-specific configuration, not in @wordpress/npm-package-json-lint-config
    • As best I can tell, however, there is no rule present which covers this case. require-dependencies only requires that the dependencies block be present, and no-restricted-dependencies is the inverse of what we need. We may need to consider contributing an upstream enhancement.

cc @greatislander in case it's of interest to you, as you'd done similarly in the past for #13947 with an upstream enhancement at https://github.com/tclindner/npm-package-json-lint/pull/106 .

Guida contributor