This repository was moved to Codeberg at https://codeberg.org/karl/babel-plugin-add-import-extension
A plugin to add extensions to import and export declarations, is very useful when you use Typescript with Babel and don't want to explicity import or export module with extensions.
# using npm
npm install --save-dev babel-plugin-add-import-extension
# usin yarn
yarn add -D babel-plugin-add-import-extension
Add to your plugins
on your babel config file:
plugins: ["babel-plugin-add-import-extension"]; // defaults to .js extension
Is possible to set the extension when you set the plugin:
plugins: [
["babel-plugin-add-import-extension", { extension: "jsx" }], // will add jsx extension
];
You can also replace existing extensions with the one you want
plugins: [
["babel-plugin-add-import-extension", { extension: "jsx", replace: true }], // will replace the "observedScriptExtensions" [see below] to jsx
];
To be able to handle file with a . in the filename (e.g component.style.ts) the plugin is configured
to only handle a certain set of file extensions. If needed you can adjust the default of ['js','ts','jsx','tsx']
by changing the observedScriptExtensions
option
plugins: [
["babel-plugin-add-import-extension", { extension: "jsx", replace: true, observedScriptExtensions: ['js','ts','jsx','tsx', 'mjs', 'cjs'] }], // will add jsx extension
];
A module import without extension:
import { add, double } from "./lib/numbers";
will be converted to:
import { add, double } from "./lib/numbers.js";
A module export without extension:
export { add, double } from "./lib/numbers";
will be converted to:
export { add, double } from "./lib/numbers.js";
If you add the replace:true
option, extensions will be overwritten like so
import { add, double } from "./lib/numbers.ts";
will be converted to:
import { add, double } from "./lib/numbers.js";
and
export { add, double } from "./lib/numbers.ts";
will be converted to:
export { add, double } from "./lib/numbers.js";
What this plugin does is to check all imported modules and if your module is not on node_module
it will consider that is a project/local module and add the choosed extension, so for node modules it don't add any extension.