WordPress/gutenberg
GitHub で見るTesting: Add lint for Babel runtime dependency in transpiled packages
Open
#14,373 opened on 2019年3月11日
Good First IssueNeeds Dev[Type] Automated Testing[Type] Task
Repository metrics
- Stars
- (9,607 stars)
- PR merge metrics
- (平均マージ 12d 18h) (30d で 509 merged PRs)
説明
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.jsonincludes amainreference to abuild/relative path. - I expect the best option for linting would be a rule from
npm-package-json-lintrequiring a specific dependency to be present, and for each exception package (the minority of cases), a package-specific.npmpackagejsonlintrc.jsonconfiguration 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-dependenciesonly requires that thedependenciesblock be present, andno-restricted-dependenciesis the inverse of what we need. We may need to consider contributing an upstream enhancement.
- The lint rule should be applied only in the Gutenberg-specific configuration, not in
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 .