Search code examples
rolluprollupjs

Aliasing or replacing external modules doesn't work


I have following rollup config:

import alias from '@rollup/plugin-alias';
import replacement from 'rollup-plugin-module-replacement';

/* ... */

export default {
    input: 'src/index.ts',
    output: {
        file: 'lib/index.js',
        format: 'amd',
        exports: 'named',
        intro: 'var global = window;',
        name: this.options.name,
    },
    external: ['axios'],
    plugins: [
        // both don't work as expected with external declared above
        alias({
            entries: [
                { find: 'axios', replacement: 'cdn/axios' },
            ],
        }),
        replacement({
            entries: [
                { find: 'axios', replacement: 'cdn/axios' },
            ],
        }),
        nodeResolve(/* ... */),
        commonjs(/* ... */),
        typescript(/* ... */),
    ],
};

This produces following code:

define(['exports', 'axios'], function (exports, axios) { 'use strict'; // ...

But I'm expecting:

define(['exports', 'cdn/axios'], function (exports, axios) { 'use strict'; // ...

Is there a way to rename those modules in upper scope define?

Thanks.


Solution

  • I just used output.paths property and it works as I needed.

    Thanks isidrok's answer about the issue on github