developit / microbundle

📦 Zero-configuration bundler for tiny modules.
https://npm.im/microbundle
MIT License
8.04k stars 362 forks source link

Cannot import external es6 module correctly #881

Open gaoyakun opened 3 years ago

gaoyakun commented 3 years ago

I have a typescript project, the ts files are stored in different directories, they all import the same external module, like this:

/main.ts:

import * as ext from 'external';
import  { g } from './lib/foo';
function f() {
  g();
  ext.func1();
}

/lib/foo.ts:

import * as ext from 'external';
function g() {
  ext.func2();
}

I want to package main.ts into an ES6 module and store it in the same directory as external.js After packaging, I expected to get this result:

main.js:

import * as ext from './external.js";
// blah blah

My packaging script looks like this:

microbundle -i main.ts --no-pkg-main -f modern --target web -o dist/main.js --external .*/external.js --alias external=./external.js 

But I got this result:

import * as ext$1 from './external.js';
import * as ext from './lib/external.js';

I think this should be because the two ts files are in different directories and aliases are used, but what should be the correct way?

developit commented 3 years ago

I think this might work if you pass --external lib/external.js (not a wildcard).