网站搜索

javascript - Esbuild 与 Typescript 命名空间合并到捆绑包不工作

我有如下代码。我想为类使用单个命名空间 Namespace1,但我不知道如何在不使用模块导入的情况下合并它们。我认为,如果在 IDE 和 TS (npx tsc) 中一切正常,那么打包应该没有问题。如果我使用模块,TS 中的组合就不正确。一些类型检测,例如 someMethod (in: Namesace1.Class1),无法工作。

我把所有东西都打包在esbuild里。有办法做到吗?有可能在不使用 import 的情况下将必要的文件合并到包中吗?这可能是 esbuild 的错误吗?

class1.ts:

namespace Namespace1 { export class Class1 { } }

class2.ts:

namespace Namespace1 { export class Class2 {

阅读更多 →

在项目中使用 esbuild-loader 处理 webpack 和 TypeScript 的同时,也使用类型声明文件?

我想在 webpack 中将 ts-loader 替换为 esbuild-loader 以提高构建时间/监听编译时间。

在我们的项目中,我们使用各种类型声明文件 .d.ts 来加载类型/接口等。然而运行 esbuild-loader 时会遇到一堆关于它们的错误,如...

Module not found: Error: Can't resolve '../../../../../../interfaces/some-d-ts-file' in 'some-tsx-file.tsx'

特别是在抱怨这个的代码中...

哪一个是 interface.d.ts

阅读更多 →

angular - 在 Rails 上使用 jsbundling/esbuild 时无法使用 TS/JS 装饰器

我正在尝试让 Angular 在 Rails 6 项目中运行。我已经安装了 jsbundling-rails(使用 esbuild)和 typescript-rails gem 来加载我的 JavaScript 和 TypeScript 文件。应该发生的是,我编写一些 TS,然后 typescript-rails 将其转译为 JS,接着 esbuild 将其全部打包,最后 jsbundling-rails 在 Rails 应用程序中运行它。

这种方法在某种程度上有效,但当我使用像 @NgModule 这样的 TypeScript 装饰器时就不行了。它可以正确地被转译成 JS,但随后无法运行,因为在 @ 符号处我会收到 Invalid or unexpected token 错误。我尝试在 typescript-rails 配置中加入 --experimentalDecorators 标志,但没有帮助。

这是因为 typescript-rails gem 正在将(标准的)TS 装饰

阅读更多 →

typescript - 无法使用 esbuild 从共享包的子路径导入模块

我正在尝试设置我的共享包,以允许从特定的子路径导入模块(例如,@shared/utils, @shared/hooks)。为此,我已经按如下方式配置了我的 package.json:

// package.json { // .. "exports": { ".": { "default": "./dist/index.js", "types": "./dist/index.d.ts" }, "./utils": { "default": "./dist/utils/index.js", "types": "./dist/utils/index.d.ts" }, // .. } }

我正在使用 esbuil

阅读更多 →

typescript - ESBuild 的 Webpack DefinePlugin 等价物

我有一个包含 DefinePlugin 的 webpack 配置,用于将计算得到的编译时值注入到打包的代码中。

示例:

// webpack.config.js new DefinePlugin({ 'process.env.APP_BUILD_MODE': JSON.stringify(passedInValueFromCLI) }) //---------------------------------------------------------------------- // app.ts // Here, I use the `process.env.APP_BUILD_MODE` that was exposed // by the DefinePlugin, in Webpack const production: boolean = process.env.APP_BUILD_MODE === 'production';

我正在重新

阅读更多 →

typescript - esbuild + knex:找不到模块 '../../dialects/mysql/index.js'

我目前正在尝试将一些代码从 JavaScript 迁移到 TypeScript。这段代码使用了 knex 包。我可以使用 tsc 构建和运行它,但我希望改用 esbuild(为了更快的构建速度)。

我使用以下工具建造:

npx esbuild index.ts --bundle --platform=node --sourcemap=external --outfile=dist/index.js

但是当我尝试运行编译后的代码时,我得到:

Canno

阅读更多 →

node.js - 错误:NodejsNpmEsbuildBuilder:EsbuildBundle - Esbuild 失败:X [错误] 无法解析 "aws-sdk"

问题:

我正在尝试构建将部署到 AWS Lambda 的 Typescript 代码。然而,在执行 Aws Sam build 时,我得到了标题中提到的错误。以下是具体的错误信息。

Building codeuri: D:\AWS\demo-app\hello-world runtime: nodejs16.x metadata: {'BuildMethod': 'esbuild', 'BuildProperties': {'Minify': True,

阅读更多 →

typescript - 如何在使用 esbuild 打包的 js 库中包含类型定义

我正在开发一个 JS 库,计划用 TypeScript 和 esbuild 发布到 npm。我的 esbuild 命令可以成功将所有 .ts 文件压缩成一个单独的 .js 文件。问题是没有类型定义,所以如果我只发布 .js 文件,使用我库的用户将没有类型定义。我如何配置 esbuild 来包含类型定义?

附带说明:我需要担心通过 import/module/es5 发布不同版本的 JS 吗?我只是希望这个库可以被所有人使用。

阅读更多 →

aws lambda - TypeScript serverless-esbuild 排除“*”(完整 node_modules)似乎不起作用

我在 Serverless 框架中使用 serverless-layers 插件,所以我想从 esbuild 中排除 node_modules 目录。

根据官方文件,我可以将“*”设置到 serverless-esbuild 的排除选项中,以排除整个 node_modules 目录。

要从 Lambda 中排除的一组依赖项。这将传递给 esbuild 的 external 选项。设置为 * 可以禁用打包 node_modules ['aws-sdk']

阅读更多 →

typescript - 如何在 AWS SAM 的 template.yaml 中添加 esbuild 插件?

我目前正在使用 AWS 无服务器应用程序模型 (SAM) 来管理我的 TypeScript Lambda 函数,并且我在构建过程中依赖 esbuild。

我想在构建过程中使用 esbuild 插件以支持 TypeScript 项目引用,以便在多个 Lambda 函数之间共享代码。然而,我不确定如何直接在 template.yaml 中包含这些插件,或者是否支持这样做。这是我当前 template.yaml 的一个片段:

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Metadata: BuildMethod: esbuild BuildProperties: Minify: true Target: es2020 # ... other properties

有没有办法直接在 SAM 模板中指定 esbuild 插件?如果不直接支持,有没

阅读更多 →