项目作者: ricokahler

项目描述 :
Use tsconfig-paths in any bundler that supports a custom babel config.
高级语言: TypeScript
项目地址: git://github.com/ricokahler/babel-plugin-tsconfig-paths-module-resolver.git
创建时间: 2021-08-30T01:31:26Z
项目社区:https://github.com/ricokahler/babel-plugin-tsconfig-paths-module-resolver

开源协议:MIT License

下载


babel-plugin-tsconfig-paths-module-resolver

npm Github Actions codecov semantic-release

Combines babel-plugin-module-resolver and tsconfig-paths to make a babel plugin that resolves tsconfig paths.

Use tsconfig-paths in any bundler that supports a custom babel config.

This library is a re-export of babel-plugin-module-resolver pre-configured with tsconfig paths support via the package tsconfig-paths.

It aims to be stable by relying on these already widely-used packages to power the heavy logic:

dependency weekly downloads
babel-plugin-module-resolver babel plugin module resolver weekly downloads
tsconfig-paths tsconfig-paths weekly downloads

These dependencies are automatically updated via renovate bot and semantic release.


How is this different from babel-plugin-tsconfig-paths?

  1. It does less — as stated above, this library depends on battled tested libs (tsconfig-paths and babel-plugin-module-resolver) to do the actual logic. The source code for this library is around ~100 SLOC which makes it easy to test and maintain.
  2. It re-exports babel-plugin-module-resolver — giving you all the features of that babel plugin including custom resolve functions.

Installation

  1. npm install --save-dev babel-plugin-tsconfig-paths-module-resolver

or

  1. yarn add --dev babel-plugin-tsconfig-paths-module-resolver

Specify the plugin in your .babelrc (or equivalent configuration file).

  1. {
  2. "presets": [
  3. // ...
  4. "@babel/preset-typescript",
  5. // ...
  6. ],
  7. "plugins": [
  8. // add this to your babel config file in `plugins`
  9. // 👇👇👇
  10. "tsconfig-paths-module-resolver"
  11. // 👆👆👆
  12. // ...
  13. ]
  14. }

That’s it! Paths from your tsconfig.json should now work!

Advanced usage

babel-plugin-tsconfig-paths-module-resolver accepts the same options as babel-plugin-module-resolver.

You can supply those extra options in your babel configuration file like so:

  1. {
  2. "presets": [
  3. // ...
  4. "@babel/preset-typescript",
  5. // ...
  6. ],
  7. "plugins": [
  8. // ...
  9. [
  10. "tsconfig-paths-module-resolver",
  11. // add extra options here
  12. // 👇👇👇
  13. {
  14. // see here:
  15. // https://github.com/tleunen/babel-plugin-module-resolver/blob/master/DOCS.md
  16. }
  17. // 👆👆👆
  18. ]
  19. ]
  20. };

resolvePath and createResolvePath

babel-plugin-module-resolver includes a configuration option to allow you to programmatically resolve your imports.

This plugin provides a resolvePath implementation powered by tsconfig-paths. If you’d like to implement your own resolvePath implementation while still utilizing this plugin’s default implementation, you can separately import createResolvePath that returns a resolvePath implementation.

  1. const createResolvePath = require('babel-plugin-tsconfig-paths-module-resolver/create-resolve-path');
  2. const defaultResolvePath = createResolvePath();
  3. /**
  4. * @param sourceFile {string} the input source path
  5. * @param currentFile {string} the absolute path of the current file
  6. * @param opts {any} the options as passed to the Babel config
  7. * @return {string}
  8. */
  9. function customResolvePath(sourceFile, currentFile, opts) {
  10. // ...
  11. const result = defaultResolvePath(sourceFile, currentFile, opts);
  12. // ...
  13. return result;
  14. }
  15. // .babelrc.js
  16. module.exports = {
  17. presets: [
  18. // ...
  19. '@babel/preset-typescript',
  20. // ...
  21. ],
  22. plugins: [
  23. // ...
  24. [
  25. 'tsconfig-paths-module-resolver',
  26. {
  27. // 👇👇👇
  28. resolvePath: customResolvePath,
  29. // 👆👆👆
  30. },
  31. ],
  32. ],
  33. };