【问题标题】:How do I get rollup to compile at runtime with Deno?如何使用 Deno 在运行时编译汇总?
【发布时间】:2020-09-13 19:41:25
【问题描述】:

我有以下 Deno 代码...

import rollup from "https://unpkg.com/rollup/dist/es/rollup.js";
const inputOptions = {
    input: "./index.mjs"
}
const outputOptions = {
    format: "esm",
    sourcemap: "inline"
}

const build = async ()=>{
    const bundle = await rollup.rollup(inputOptions);
    const { output } = await bundle.generate(outputOptions);
    for (const chunkOrAsset of output) {
        if (chunkOrAsset.type === 'asset') {
            console.log('Asset', chunkOrAsset);
        } else{
            console.log('Chunk', chunkOrAsset.modules);
        }
    }
}

但是当我尝试跑步时,我得到...

错误:相对导入路径“路径”未以 / 或 ./ 或 ../ 为前缀从“https://unpkg.com/rollup@2.26.11/dist/es/rollup.js”导入

我也试过

import rollup from "https://unpkg.com/rollup";

但我明白了……

错误:未捕获的 SyntaxError:请求的模块“https://unpkg.com/rollup”未提供名为“default”的导出

我终于尝试了...

import * as rollup from "https://unpkg.com/rollup";

但我明白了……

error: Uncaught ReferenceError: exports is not defined
Object.defineProperty(exports, '__esModule', { value: true });

如何让汇总与 Deno 一起使用?

【问题讨论】:

  • 不确定它是否有效,但请尝试在该行前加上 // @ts-ignore
  • 简短的回答是你不能。 Rollup 使用像 fspath 这样的 I/O 模块,它们仅在 Nodejs 中可用。除非你找到一种方法来填充/填充这些模块。
  • nodejs != deno;它们并不兼容。你需要等到 rollup 被移植到 deno。

标签: rollup deno


【解决方案1】:

2021 年 1 月开始着手将汇总移植到 Deno,因此这个问题现在可以解决。您可以导入 deno-rollup 模块,然后使用与 rollup 相同的 API。

这是在 Deno 下运行的原始代码的一个版本:

import { rollup } from "https://deno.land/x/drollup@2.42.3%2B0.17.1/mod.ts";

const bundle = await rollup({
  input: "./index.mjs",
});

const { output } = await bundle.generate({
  format: "esm",
  sourcemap: "inline",
});

for (const chunkOrAsset of output) {
  if (chunkOrAsset.type === "asset") {
    console.log("Asset", chunkOrAsset);
  } else {
    console.log("Chunk", chunkOrAsset.modules);
  }
}

您可以在他们的存储库中找到多个使用 deno-rollup 端口的示例:https://github.com/cmorten/deno-rollup

请注意,Deno 的运行时编译 API 被认为是不稳定的 API,这意味着您必须在运行 Deno 时使用 --unstable 标志才能使其可用。例如:deno run --unstable --allow-read=. build.ts

【讨论】:

    猜你喜欢
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 2020-02-25
    • 1970-01-01
    • 2011-03-19
    • 2021-09-13
    相关资源
    最近更新 更多