![require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages](https://cdn.sanity.io/images/cgdhsj6q/production/be8ab80c8efa5907bc341c6fefe9aa20d239d890-1600x1097.png?w=400&fit=max&auto=format)
Security News
require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
rollup-plugin-alias
Advanced tools
Define aliases when bundling packages with Rollup.
Let's take a simple import as an example:
import something from '../../../something';
something();
This probably doesn't look too bad on its own. But imagine this is not the only instance in your code base and after a refactor/restructuring this might fall over. With this plugin in place, you can alias ../../../something
with something
for readability. In case of a refactor only the alias would need to be changed instead of navigating through the code base and changing all imports.
import something from 'something';
something();
When we write tests, we may want an easier way to access the local library we are testing or mocking libraries. We may also define aliases to counteract "require hell" and get rid of all those ../../../
imports we may have in the process.
For Webpack users: This is a plugin to mimic the resolve.alias
functionality in Rollup.
$ npm install rollup-plugin-alias
// rollup.config.js
import alias from 'rollup-plugin-alias';
export default {
input: './src/index.js',
plugins: [
alias({
resolve: ['.jsx', '.js'], //optional, by default this will just look for .js files or folders
entries:[
{find:'something', replacement: '../../../something'}, //the initial example
{find:'somelibrary-1.0.0', replacement: './mylocallibrary-1.5.0'}, //remap a library with a specific version
{find:/^i18n\!(.*)/, replacement: '$1.js'}, //remove something in front of the import and append an extension (e.g. loaders, for files that were previously transpiled via the AMD module, to properly handle them in rollup as internals now)
//for whatever reason, replace all .js extensions with .wasm
{find:/^(.*)\.js$/, replacement: '$1.wasm'}
]
})
],
};
// or with object syntax
export default {
input: './src/index.js',
plugins: [
alias({
resolve: ['.jsx', '.js'],
entries: {
something: '../../../something',
'somelibrary-1.0.0': './mylocallibrary-1.5.0',
}
})
],
};
The order of the entries is important, in that the first rules are applied first.
You can use either simple Strings or Regular Expressions to search in a more distinct and complex manner (e.g. to do partial replacements via subpattern-matching, see aboves example).
MIT, see LICENSE
for more information
FAQs
Resolves aliases with Rollup
The npm package rollup-plugin-alias receives a total of 20,579 weekly downloads. As such, rollup-plugin-alias popularity was classified as popular.
We found that rollup-plugin-alias demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.