Rollup.js-从bundle中排除模块



我遇到的问题是我无法正确配置我的rollup.config.js。我想从绑定中排除libModule.js模块。到目前为止,我已经尝试了许多配置和设置,但都没有成功。有人能帮帮我吗。

这是我的文件夹结构。

my-folder
└────src
│    └───index.ts
│    └───libModule.js
│
└────dist
│    └───bundle.js
│
└───rollup.config.js

index.ts

import $ from './libModule';
container.appendChild(
$.element('img', { id: 'image', src: '9592/test_1.png', style: '' })
);

libModule.js

export default function $(e) {
return document.getElementById(e)
}
...

rollup.config.js

import path from 'path';
import typescript from 'rollup-plugin-typescript2';
const externalId = path.resolve(__dirname, './src/libModule.js');
export default {
input: './src/index.ts',
output: {
file: './dist/bundle.js',
format: 'iife',
name: 'sco',
sourcemap: true,
interop: false,
globals: {
[externalId]: '$'
}
},
external: [externalId],
plugins: [
typescript({
typescript: require('typescript'),
})
],
}

tsconfig.json

{
"compilerOptions": {
"outDir": "./dist",
"module": "es6",
"noImplicitAny": true,
"sourceMap": true,
"target": "es5",
"allowJs": true,
"moduleResolution": "node"
},
"include": [
"src/**/*"
],
"exclude": ["node_modules"],
"typedocOptions": {
"inputFiles": [".src/**/*"],
"mode": "modules",
"out": "docs",
"readme": "none"
}
}

问题是需要将正确的标识符标记为外部标识符。你需要用正确的url处理每个导入,所以如果你从不同的url或位置导入相同的模块,你需要将所有模块标记为外部

import ex from './ex.js'
import ex from '../modules/ex.js'

等等将它们视为字符串值

https://github.com/pvissenberg/typescript_workspace/pull/1

最新更新