当前位置: 首页 > 知识库问答 >
问题:

使用Typescript时,将节点_模块汇总到应用程序中

干永丰
2023-03-14

我有一个TypeScript应用程序。我想将node_modules内的依赖项捆绑到生成的捆绑包中。这是我迄今为止根据这些帖子尝试的内容(是否汇总捆绑包node_modulesbundle.js?,是否汇总捆绑包node_modulesbundle.js?)。

以下是我的汇总配置和我尝试绑定的简单文件:

import typescript from "@rollup/plugin-typescript";
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import globals from "rollup-plugin-node-globals";
import builtins from "rollup-plugin-node-builtins";

export default {
  input: "src/test.ts",
  output: {
    dir: "dist/",
    format: "iife",
  },
  plugins: [
    resolve({jsnext: true}),
    commonjs({ include: ["src/test.ts", "node_modules/**"] }),
    // I need to polyfill some node stuff
    globals(),
    builtins(),
    typescript({ noEmitOnError: false, outDir: "dist/" }),
  ],
};

文件:

import * as obj from 'some-module'
console.log(obj)

使用汇总打字稿时,如何在node_modules中获取依赖项以捆绑到最终输出中?我怀疑问题是Typecript插件正在输出使用需要的文件,而汇总无法识别需要

共有2个答案

闻人飞白
2023-03-14

您需要将TypeScript配置为输出ES模块,以使其正常工作。在tsconfig中将模块设置为“ESNext”。json:

{
    "compilerOptions": {
      "module": "ESNext"
    }
}
郎弘壮
2023-03-14

包中。json,确保要包含的依赖项已在依赖项属性中注册,而不是对等依赖项。Rollup会将它们捆绑到输出中。

 类似资料:
  • 问题内容: 我正在尝试使其工作,但似乎无法在SO的任何地方找到解决方案。尝试编译此单文件应用程序时: 使用命令“ tsc app.ts –module’commonjs’”,我得到以下错误(不使用– module标志给我一个额外的错误,告诉我我需要它来编译外部模块): 问题答案: TypeScript需要知道它存在。 为节点安装类型definitinos: 旧答案 遵循这两个步骤 从此处下载文件:

  • 有一个简单的汇总配置,像这样。 我想用rollup来构建node_模块并将它们放入捆绑包,但我得到了一个错误,jsx出现了一个错误,似乎它无法处理jsx语法,但是如果我不在babel插件中包含node_模块,它就可以正常工作。那么,使用rollup构建节点_模块的正确方法是什么?

  • 问题内容: 我想在我的Ember-CLI应用程序中使用此Node.js模块https://www.npmjs.com/package/remarkable- regexp 。 如何使它可用于Ember应用程序? 我通过将其添加到 但是它失败了: 路径或模式“ node_modules / remarkable-regexp / index.js”与任何文件都不匹配 问题答案: 既然是npm模块,我

  • 我有一个问题与汇总和汇总插件节点解决。 如果我有这种类型的进口: 它被转换为: 当我尝试在使用Webpack的项目中使用它时,这会破坏捆绑包,因为文件夹显然不是我的Rollup-bundled包的文件夹的子文件夹(因为npm平坦了依赖项)。 我已经将所有的定义为。 这是我的相关配置: 如何使构建保持节点模块导入保持绝对路径?我想在写的时候保存它们,这样节点。js/webpack/wathever可

  • 长话短说,我试图在CommonJS模块中使用一个只有ES6模块入口点的npm包,即(GitHub),因为我的整个50多个模块的应用程序都是在CommonJS中构建的。根据节点文档,这样做的标准方法是使用函数。我使用以下代码尝试了这种方法: 但是,这会导致包出错,而不一定是上面的导入函数: 有没有一种方法可以绕过这个问题,这样我就可以在CommonJS模块中使用这个包了?

  • 我使用的是TypeScript(1.6),节点位于--harmony标志下,因此我希望将es6模块语法转换到commonJS。 据我所知,我不能用Typescript1.6来做这件事。如果我将目标设置为es6,将模块设置为commonjs,我会得到一个TypeScript错误- 当目标为“ES6”或更高版本时,无法将模块编译为“commonjs”、“amd”、“system”或“umd”。 为什么