首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >卷起动态模块解析

卷起动态模块解析
EN

Stack Overflow用户
提问于 2019-12-02 03:08:14
回答 1查看 2.6K关注 0票数 0

我试图使用卷起将一些JS打包到一个文件中。但是,我想要到import的一个文件的路径只有在编译时才知道,所以我需要告诉汇总如何找到它。

这是我的主要文件:

代码语言:javascript
复制
import * as commands from 'command-loader';

console.log(commands);

您可以看到,它正在从command-loader导入所有内容。文件的名称和内容并不重要,我只需要将其内容捆绑到主文件中。该文件看起来类似于:

代码语言:javascript
复制
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,但是它似乎不起作用(当然,我对这个插件不太了解)。

代码语言:javascript
复制
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,但没有结果。

代码语言:javascript
复制
const rollup = require('rollup');
const { bundleImports } = require('rollup-plugin-bundle-imports');

await rollup.rollup({
  input: mainFilePath,
  plugins: [
    bundleImports({
      include: [dynamicFilePath],
      importAs: 'command-loader',
    })
  ]
});

也许我走错路了。如果有更好的方法在编译时动态地import文件,我很想了解它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-03 02:52:47

明白了:@rollup/plugin-alias

一种用于在捆绑包时定义别名的汇总插件。

下面是我最后使用的代码:

代码语言:javascript
复制
const rollup = require('rollup');
const alias = require('@rollup/plugin-alias');

await rollup.rollup({
  input: mainFilePath,
  plugins: [
    alias({
      entries: {
        'command-loader': dynamicFilePath
      }
    })
  ]
});

结合CJS输出格式,分析上述示例代码并生成:

代码语言:javascript
复制
'use strict';

function exampleCommand() {
  console.log('Running command...');
}

var commands = /*#__PURE__*/Object.freeze({
  __proto__: null,
  exampleCommand: exampleCommand
});

console.log(commands);

成功!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59132170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档