我试图使用卷起将一些JS打包到一个文件中。但是,我想要到import的一个文件的路径只有在编译时才知道,所以我需要告诉汇总如何找到它。
这是我的主要文件:
import * as commands from 'command-loader';
console.log(commands);您可以看到,它正在从command-loader导入所有内容。文件的名称和内容并不重要,我只需要将其内容捆绑到主文件中。该文件看起来类似于:
export function exampleCommand() {
console.log('Running command...');
}汇总错误非常清楚,它不知道如何找到command-loader:'command-loader' is imported by ../index.js, but could not be resolved – treating it as an external dependency。
我知道我可能只需读取命令文件的内容并将其添加到主文件中,但这感觉很尴尬,因为我必须从命令文件中删除export并定义一个“命令”对象,这可能会违背汇总的目的。
我尝试过使用rollup-plugin-node-resolve来告诉Rollup如何找到command-loader,但是它似乎不起作用(当然,我对这个插件不太了解)。
const rollup = require('rollup');
const resolve = require('rollup-plugin-node-resolve');
await rollup.rollup({
input: mainFilePath,
plugins: [
resolve({
'command-loader': dynamicFilePath
})
]
});我也尝试过使用rollup-plugin-bundle-imports,但没有结果。
const rollup = require('rollup');
const { bundleImports } = require('rollup-plugin-bundle-imports');
await rollup.rollup({
input: mainFilePath,
plugins: [
bundleImports({
include: [dynamicFilePath],
importAs: 'command-loader',
})
]
});也许我走错路了。如果有更好的方法在编译时动态地import文件,我很想了解它。
发布于 2019-12-03 02:52:47
一种用于在捆绑包时定义别名的汇总插件。
下面是我最后使用的代码:
const rollup = require('rollup');
const alias = require('@rollup/plugin-alias');
await rollup.rollup({
input: mainFilePath,
plugins: [
alias({
entries: {
'command-loader': dynamicFilePath
}
})
]
});结合CJS输出格式,分析上述示例代码并生成:
'use strict';
function exampleCommand() {
console.log('Running command...');
}
var commands = /*#__PURE__*/Object.freeze({
__proto__: null,
exampleCommand: exampleCommand
});
console.log(commands);成功!
https://stackoverflow.com/questions/59132170
复制相似问题