首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Typescript和ES模块发布Node模块

但是,当你想用TypeScript编写一个库或包,同时又想用JavaScript来发布,这样你的最终用户就不必手动编译你的代码,会发生什么?...如果您必须使用一组较旧的浏览器,这些浏览器可能不具有所有最新和最强大的功能,则可以将其设置为 ES2015。如果您确实需要最大的浏览器覆盖范围,TypeScript甚至将支持 ES3。...要编译TypeScript,我们将运行 tsc 并使用 -p 标志(“project”的缩写)告诉它 tsconfig.json 的位置: npx tsc -p tsconfig.json 如果你有任何类型错误或配置问题...发布CommonJS版本也很好,所以Node不需要额外的工作。ES模块支持将出现在Node 13和更高的版本中,但是要赶上生态系统还需要一段时间。...然后覆盖需要更改的设置。我相应地更新模块,然后将 outDir 设置更新到 lib/cjs ,这样我们就可以输出到lib 中的子文件夹。

2.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TypeScript 2.6 来了!

    这些类型不只是帮助捕捉拼写错误、逻辑错误这类的错误,他们也可以给你带来更好的工具像编辑自动补全,更方便的代码库导航,等等其他功能。...Visual Studio 2017 用户,使用 15.2 或者更高版本的,可以直接从这里安装。...仅仅通过适当的语言标志 作为参数传给 TypeScript 编译器的 --locale 选项。如果该语言被支持,TypeScript将提供一个翻译的版本。...这意味着只有有影响的文件将经历一个树状变换流程(将代码从 TypeScript 编译到 ES2016、ES2015、ES5,到 ES3 的过程),以及发布流程(打印出编译后的文件本身)。...如果您没有使用 --watch 模式,因为您依赖于另一个构建工具,那么好消息是我们打算为其他工具提供一个 API,以便他们也能从这个更改中获得一些相同的性能提升。

    1.1K20

    【TypeScript 演化史 — 第十二章】ES5ES3 的生成器和迭代支持及 –checkJS选项下 .js 文件中的错误

    现在将index.ts文件编译成index.js。当以 ES3 或 ES5 为目标时,TypeScript 编译器将为上述代码生成一个基于索引的for循环的代码: var text = "Booh!"...在 ES2015 系列中使用 downlevelIteration ES2015 增加了新的集合类型,比如Map和Set到标准库。在本节中,将介绍如何使用for...of循环遍历Map。...,说它找不到Map: image.png 这是因为咱们的目标设置为ES5,它没有实现 Map 。...但是,一旦明确指定lib选项,其默认值将不再适用,因此,还要添加"dom"和"es5",以便可以访问其他标准库方法。...这可以通过将- checkJs编译器选项设置为false并在每个选定文件的顶部添加// @ts-check注释来实现。 如果你想要在大型 JS代码库中逐步引入类型检查,推荐这种方法。

    2K20

    从Java 8升级到Java 11的注意事项

    JEP 254:Compact string——将字符串的内部表示形式从每个字符的两个字节更改为每个字符一个或两个字节,具体取决于字符编码。...为了解决此问题,我们对实现进行了更改,在启动时每种类型只启动一个编译器线程。系统会动态处理启动其他线程和关闭未使用线程的操作。 对核心库进行以下更改会影响新代码或已修改代码的性能。...可能还需要使用 --add-opens 或 --add-reads 向编译器公开封装的包(请参阅 JEP 261)。 库可以考虑以多版本 jar 文件形式打包。...将所有库更新到最新版本的问题在于,如果应用程序中存在错误,则更难找到根本原因。发生此错误是因为更新了某个库吗?或者,此错误是由运行时中的某些更改引起的吗?...仅更新所需内容的问题在于,可能需要多次迭代才能解决问题。 此处的建议是尽可能少做更改,将第三方库单独进行更新。如果更新第三方库,则往往需要与 Java 11 兼容的最新且最好的版本。

    2.4K20

    【TypeScript 演化史 -- 12】ES5ES3 的生成器和迭代支持及 --checkJS选项下 .js 文件中的错误

    现在将index.ts文件编译成index.js。当以 ES3 或 ES5 为目标时,TypeScript 编译器将为上述代码生成一个基于索引的for循环的代码: var text = "Booh!...在 ES2015 系列中使用 downlevelIteration ES2015 增加了新的集合类型,比如Map和Set到标准库。在本节中,将介绍如何使用for...of循环遍历Map。...,说它找不到Map: 这是因为咱们的目标设置为ES5,它没有实现 Map 。...但是,一旦明确指定lib选项,其默认值将不再适用,因此,还要添加"dom"和"es5",以便可以访问其他标准库方法。...这可以通过将- checkJs编译器选项设置为false并在每个选定文件的顶部添加// @ts-check注释来实现。 如果你想要在大型 JS代码库中逐步引入类型检查,推荐这种方法。

    1.1K20

    一些你需要掌握的 tsconfig.json 常用配置项

    compilerOptions:编译器相关的选项。比如配置编译成 ES5,模块化使用 commonjs 等。这里的编译配置很多,后面我们会讲解一些常用的配置; files:指定需要被编译的文件列表。...target 指定编译的目标版本。 tsc 也可以像 babel 一样,可以将高版本的 TS / JS 编译为低版本。你看这个 tsc 脚本多大。...另外,esnext 指的是当前版本的 TS 编译器支持的最高版本。 这些值是大小写敏感的,可以是 es5、ES5,或大小写混杂。 通常来说前端项目会使用 es5。.../other/_lib2/*"] }, 上面的配置,是将 other/_lib 和 other/_lib2 路径重映射为 @lib。...这样,原来比较冗长的路径: import LibA from "other/_lib/lib_a"; 就可以改为: import LibA from "@lib/lib_a"; declaration

    1.6K10

    JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了【JDK16特性讲解】

    这些更改对某些人来说可能不方便,但解决方法很简单:如果您需要标识,请使用不同的类——通常是您自己定义的类,但 Object也 AtomicReference可能是合适的。...描述 要利用 C++14 语言功能,需要在构建时进行一些更改,具体取决于平台编译器。还需要指定各种平台编译器的最低可接受版本。...Linux:将 -std=gnu++98编译器选项替换为 -std=c++14. gcc 的最低支持版本是 5.0。...macOS:将 -std=gnu++98编译器选项替换为 -std=c++14. clang 的最低支持版本是 3.5。...作为对 JDK 的所有内部元素进行强封装的下一步,我们建议将 --illegal-access 选项的默认模式从 permit更改为 deny。

    1.7K50

    如何运行50k +并发用户的负载测试

    如果您的引擎没有达到75%的CPU利用率或85%的内存使用率(可以忽略一次峰值): 将线程数更改为700并再次运行测试 提高线程数,直到获得1000个线程或60%的CPU /内存使用量 如果您的引擎超过了...测试运行时,请转到监控选项卡并验证: 没有一个引擎通过75%的CPU或85%的内存限制 找到您的控制台标签。如果您将转到“日志”选项卡 – >“网络信息”并查找控制台的专用IP,则可以找到其名称。...我们现在准备用50k用户创建我们的最终主/从测试: 将测试名称从“我的产品测试”更改为“我的产品测试 – 从属1”。...将测试名称更改为“My prod test -Master”。 转到“高级测试属性”并将其从“从”更改为“主”。...您可以将每个测试(从站或主站)更改为来自不同的区域,具有不同的脚本/ csv /其他文件,使用不同的网络仿真和/或不同的参数。

    1.4K40

    Visual C++ 中的重大更改

    新版本中会引起这类问题的更改称为重大更改,通常,修改 C++ 语言标准、函数签名或内存中的对象布局时需要进行这种更改。     ...重大更改为,如果你之前使用的是具有相同签名的运算符 delete(以与 placement new 运算符对应),你将收到编译器错误(C2956,在使用 placement new 的点位置出现,因为在代码中的该位置...更改指针类型需要对使用联合字段的代码进行更改。 将代码更改为值将更改存储在联合中的数据,这会影响其他字段,因为联合类型中的字段共享相同的内存。 根据值的大小,它还可能更改联合的大小。 ...将旧的 CRT 库(libcmt.lib、libcmtd.lib、msvcrt.lib、msvcrtd.lib)替换为等效的重构库。...如果将代码编译为 /clr:pure,可能需要添加 #include 或 #include 以解决由于此更改导致的生成错误。

    5.3K10

    【Linux】静态库和动态库

    我们将所有的头文件给到用户: 还需要将对应的静态库给到用户: 如上,我们对应的头文件和静态库都有了,所以我们尝试编译一下: 我们发现出现了链接错误,这是为什么呢?...那么我们尝试编译一下: 那么现在就不会报头文件的错误了,而是链接报错了。...使用动态库 接下来我们按照使用静态库的方式尝试使用动态库,首先先生成可执行程序: 接下来我们开始运行: 我们会发现,报错了,报的是不能打开该动态库,找不到该文件或目录。这是为什么呢?...而我们在上面将路径和库名称都告诉了编译器,但是程序已经形成了,编译器的工作周期已经结束了,接下来运行的时候,和编译器就没有关系了!...接下来我们尝试一下,首先我们需要找到该库对应的路径: 系统是知道我们需要链接哪一个库的,只是找不到它在哪里,所以只需要给它所在的路径即可,不需要包含库名字了。

    74710

    Visual C++ 中的重大更改

    新版本中会引起这类问题的更改称为重大更改,通常,修改 C++ 语言标准、函数签名或内存中的对象布局时需要进行这种更改。     ...重大更改为,如果你之前使用的是具有相同签名的运算符 delete(以与 placement new 运算符对应),你将收到编译器错误(C2956,在使用 placement new 的点位置出现,因为在代码中的该位置...更改指针类型需要对使用联合字段的代码进行更改。 将代码更改为值将更改存储在联合中的数据,这会影响其他字段,因为联合类型中的字段共享相同的内存。 根据值的大小,它还可能更改联合的大小。 ...将旧的 CRT 库(libcmt.lib、libcmtd.lib、msvcrt.lib、msvcrtd.lib)替换为等效的重构库。...如果将代码编译为 /clr:pure,可能需要添加 #include 或 #include 以解决由于此更改导致的生成错误。

    4.8K00

    TypeScript学习笔记(三)—— 编译选项、声明文件

    设置ts代码编译的目标版本 可选值: ES3(默认)、ES5、ES6/ES2015、ES7/ES2016、ES2017、ES2018、ES2019、ES2020、ESNext...示例: "compilerOptions": {    "target": "ES6" } 如上设置,我们所编写的ts代码将会被编译为ES6版本的js代码 lib 指定代码运行时所包含的库...// 指定使⽤模块: 'commonjs', 'amd','system', 'umd' or 'es2015' "lib": [], // 指定要包含在编译中的库⽂件 "allowJs": true...: true, // 将代码与 sourcemaps ⽣成到⼀个⽂件中,要求同时设置了 --inlineSourceMap 或 --sourceMap 属性 /* 其他选项 */ "experimentalDecorators.../index.d.ts", 实测发现,外部库找第三方库声明文件默认路径为第三方库 (subtract) 根目录下的 index.d.ts 文件,找不到的话,会去找第三方库 package.json 中

    2.6K20

    会写 TypeScript 但你真的会 TS 编译配置吗?

    但是 TypeScript 并不可以直接运行,而是需要转换成 JavaScript 代码才可以在 Node.js 或浏览器环境下执行,因此我们需要通过“编译器”将 TS 代码转换为 JS 代码。...延伸一下知识点,思考一下 tsc 是如何将高版本(ECMAScript 规范)代码向低版本代码转换的?这个转换的结果靠谱吗?与 Babel 有何差异?...(2). lib lib 字段是用于为了在我们的代码中显示的指明需要支持的 ECMAScript 语法或环境对应的类型声明文件。...(6). baseUrl & paths baseUrl:设置基本目录以解析非绝对模块名称(定义一个根目录,以此进行绝对文件路径解析) paths:用于设置模块名或路径映射列表,这样就可以简写项目中自定义模块的文件路径...": { /* 基本选项 */ "target": "es6", // 指定 ECMAScript 目标版本: 'ES3' (default), 'ES5', 'ES2015', 'ES2016

    3.8K41

    Linux共享库、静态库、动态库详解

    另外,编译器在请求库时使用的名称(我将其称为“链接器名称”),这只是没有任何版本号的soname。 管理共享库的关键是这些名称的分离。...您使用-Wl gcc选项传递soname。-Wl选项将选项传递给链接器(在这种情况下为-soname链接器选项) - -Wl之后的逗号不是打字错误,并且您不能在选项中包含未转义的空格。...使用-l和-L选项。 如果您不能或不想在标准位置安装库(例如,您没有权限修改/ usr / lib),则需要更改方法。...$ * 编写自己的程序时请不要依赖这个; 尝试确保您的库向后兼容,或者您​​每次进行不兼容的更改时都会在soname中增加版本号。...在便携式程序中更改成员函数的访问权限(即公共,受保护或私有),因为一些编译器将访问权限转换为函数名称。 给定这个冗长的列表,特别是C ++库的开发人员必须计划更多的偶尔更新破坏二进制兼容性。

    8.9K11
    领券