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

新的package.json `exports`字段不适用于TypeScript

在旧版本的Node.js中,我们可以使用main字段来指定入口文件,而在新版本的Node.js中,可以使用exports字段来指定模块的导出方式。然而,对于TypeScript项目来说,新的exports字段并不适用。

TypeScript项目通常使用tsconfig.json文件来配置编译选项,其中可以指定输出目录和入口文件等信息。在这种情况下,exports字段并不需要使用。

相反,我们可以在tsconfig.json文件中使用outDir字段来指定输出目录,然后使用main字段来指定入口文件。例如:

代码语言:txt
复制
{
  "compilerOptions": {
    "outDir": "dist",
    "module": "commonjs"
  },
  "main": "dist/index.js"
}

这样,在使用TypeScript编译项目时,会将编译后的文件输出到dist目录,并将dist/index.js作为入口文件。

对于TypeScript项目,我们还可以使用其他工具来管理模块的导出方式,例如使用ts-node来直接运行TypeScript文件,或者使用webpack来打包项目。

总结起来,新的package.json exports字段不适用于TypeScript项目,我们可以使用tsconfig.json文件来配置编译选项,并使用main字段来指定入口文件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

现代 JavaScript 库打包指南

以及一些额外信息,用来帮助你了解这些建议被提出原因,或帮助你判断是否不需要遵循某些建议。这个指南仅适用于 「库(libraries)」,不适用于应用(app)。...定义你 exports exports 为你库定义公共 API package.json exports 字段 - 有时被称为“package exports” - 是一个非常有用补充,尽管它确实引入了一些复杂性...import 用于当有人通过 import 使用你库时 require 用于当有人通过 require 使用你库时 default 字段用于兜底,在没有任何条件匹配时使用。...虽然目前可能并不会匹配到它,但为了面对“未知未来场景”,使用它是好 当一个打包工具或者运行时支持 exports 字段时候,那么 package.json顶级字段 main、types、module...types 应该指向你 TypeScript 入口文件,例如 index.d.ts;它应该与 package exports types 字段指向同一个文件。

2.4K20

如何规范地发布一个现代化 NPM 包?

以及一些额外信息,用来帮助你了解这些建议被提出原因,或帮助你判断是否不需要遵循某些建议。这个指南仅适用于 「库(libraries)」,不适用于应用(app)。...定义你 exports exports 为你库定义公共 API package.json exports 字段 - 有时被称为“package exports” - 是一个非常有用补充,尽管它确实引入了一些复杂性...import 用于当有人通过 import 使用你库时 require 用于当有人通过 require 使用你库时 default 字段用于兜底,在没有任何条件匹配时使用。...虽然目前可能并不会匹配到它,但为了面对“未知未来场景”,使用它是好 当一个打包工具或者运行时支持 exports 字段时候,那么 package.json顶级字段 main、types、module...types 应该指向你 TypeScript 入口文件,例如 index.d.ts;它应该与 package exports types 字段指向同一个文件。

2.2K20
  • 现代 JavaScript 库打包指南

    以及一些额外信息,用来帮助你了解这些建议被提出原因,或帮助你判断是否不需要遵循某些建议。这个指南仅适用于 「库(libraries)」,不适用于应用(app)。...定义你 exports exports 为你库定义公共 API package.json exports 字段 - 有时被称为“package exports” - 是一个非常有用补充,尽管它确实引入了一些复杂性...import 用于当有人通过 import 使用你库时 require 用于当有人通过 require 使用你库时 default 字段用于兜底,在没有任何条件匹配时使用。...虽然目前可能并不会匹配到它,但为了面对“未知未来场景”,使用它是好 当一个打包工具或者运行时支持 exports 字段时候,那么 package.json顶级字段 main、types、module...types 应该指向你 TypeScript 入口文件,例如 index.d.ts;它应该与 package exports types 字段指向同一个文件。

    91630

    现代 JavaScript 库打包指南

    这个指南仅适用于 库(libraries),不适用于应用(app)。 要强调是,这只是一些建议,并不是所有库都必须要遵循。每个库都是独特,它们可能有充足理由不采用本文中任何建议。...定义你 exports exports 为你库定义公共 API package.json exports 字段 - 有时被称为“package exports” - 是一个非常有用补充,尽管它确实引入了一些复杂性...字段用于兜底,在没有任何条件匹配时使用。...虽然目前可能并不会匹配到它,但为了面对“未知未来场景”,使用它是好 当一个打包工具或者运行时支持 exports 字段时候,那么 package.json顶级字段 main、types、module...types 应该指向你 TypeScript 入口文件,例如 index.d.ts;它应该与 package exports types 字段指向同一个文件。

    88210

    巧用 exports 和 typeVersions 提升 npm 包用户使用体验

    主入口文件可以是 JavaScript 代码、JSON 数据或者是 Node.js C++扩展 module module字段是 ES 模块规范下入口文件,它被用于支持 import 语法。...库使用者也不需关心从统一入口导入方法到底是编译时方法还是运行时方法 这个时候就可以利用package.jsonexports字段进行导出,当存在该字段时会忽略main和module字段。.../lib/*.js" } } 类型 按照上述操作完成后,打包就能符合相关预期,但是对于 typescript 文件导入如果使用runtime路径是会找不到相应类型文件,typescript 并不会去识别该字段...相关自定义resolver选项含义 extensions 查找文件扩展名 conditionNames 对应package.jsonexports条件 exportsFields 指定从package.json...来实现 总结 为了实现一个库更友好导出,我们可以借助 package.json exports字段指定多条件导出方式,主流打包工具以及 Node.js 都已经支持;对于 ts 类型,我们可以结合typeVersions

    43110

    ECMAScript Modules 在 Node.js 中支持与使用

    而官方则提供了一种简单有效方式,那就是通过 package.json type 字段。...在规范中,package.json type 字段一共有两种值,"module" 与 "commonjs",而当 type 字段不存在时则默认使用 "commonjs" 来适应原有规范。.../node_modules/commonjs-package/package.json // 缺乏 "type" 字段或者 "type" 为 "commonjs". import '....require, exports, module.exports, __filename, __dirname Node 在实现 CommonJS 规范时,实际上给每一个文件都做了包裹,传入了以上这些变量...这也就是为什么在 Babel/TypeScript 等工具体系下,明明可以使用 ES Modules 进行开发了,还需要关注 Node 具体实现原因,因为之前代码强依赖于这些变量,在规范下必须进行修改才能继续使用

    3K30

    扩展名、新语法、工具类型

    相关支持,这应该是 4.5 版本最为核心特性了,由于原文篇幅过长,这里只简单介绍下相关细节: 新增了 compilerOptions.module:node12 与 nodenext package.json...现在 TS4.5 对此也提供了相同工作流,即 package.json type 字段现在也会被 TS 读取,来决定是否将其作为 ESM 解析。...文件扩展:.mts 与 .cts除了使用 type 字段来控制模块解析以外,你也可以显式使用 TS4.5 新增两个扩展名 .mts 与 .cts 来声明文件,就像 NodeJS 中一样,.mjs...package.json exports 与 imports: 在简单情况下,我们只要使用 main 字段来定义应用程序入口即可,但如果想更精细控制对用户暴露文件,就需要使用 exports...类似的,现在如果你使用 import,它就会去 import 地址寻找类型声明文件,反之则是 require,你仍然可以新增单独 types 字段: { "name": "pkg", "exports

    1.4K30

    Vite 打包组件库之多版本库构建

    所以需要实现一个 v2 版本来满足咱们重构,至于怎么重构,一些实现细节,本文就不阐述了,会有些偏题了。...目标 实现多版本组件共存 满足多个场景下渐进式升级 实现 我们需要准备两个维度配置: 打包维度 ------ 确保多入口可以打包 OK package.json 配置 ------ 确保外部可以引入正确声明文件.../types/v2/index.d.ts"] } }, "exports": { "./package.json": "..../lib/index.cjs.v2.mjs" } } } 我们可以重点关注下 exports 、typesVersions 两个字段配置: exports 保证了不同路径下引用区分 import...和 require 路径正确性 typesVersions 可以保证不同 typescript 版本,不同文件路径下声明文件引入 如图所示,完美地保证了类型以及不同入口对象引入与导出。

    36010

    webpack打包typescript

    webpack打包TS 相信很多前端朋友都知道webpack是什么,webpack 是一个模块打包器。它主要目标是将 JavaScript 文件打包在一起,打包后文件用于在浏览器中使用。...webpack概念 本质上,webpack 是一个用于现代 JavaScript 应用程序 静态模块打包工具。...在一个 TypeScript 文件中写下代码时,它处于全局命名空间中,使用全局变量空间是危险,因为它会与文件内代码命名冲突 所以可以使用import或者export,在当前文件中创建一个本地作用域...生成tsc05.js文件 "use strict"; exports....如果TypeScript是全局安装,请尝试使用“link链接TypeScript”或“npm链接TypeScript” 当前package.json配置: { "devDependencies

    2.1K00

    Node.js 项目 TypeScript 改造指南

    /usr/bin/env node |-- dist # 项目使用ts开发,dist为编译后文件目录,注意package.json中main字段要指向dist目录 |-- docs...# 存放项目相关文档 |-- scripts # 对应package.json中scripts字段需要执行脚本文件 |-- src.../node_modules/.bin/tsc(全局安装忽略,不建议这么做,其他同学可能已经全局安装了,但可能会与你项目所依赖 typescript 版本不一致),在 package.json 中添加以下脚本...typescript-eslint/parser 用于解析ts文件 'extends': ['plugin:@typescript-eslint/recommended'], // 让ESLint继承... ts 声明文件写法(declare module 'mod'),如前面所说path模块,也支持此种 Import assignment 写法,但建议还是不要这样写了。

    8.3K32

    Axios 功能扩展之 axios-retry 源码阅读笔记

    package.json 参考如上,未来我们也应该在开发工具库时候需要关注以下字段: files:在发包时候发布将 es、lib 两文件夹,以及 index.js 和 index.d.ts 文件。...typings:TypeScript 类型定义文件,用于TypeScript 编码环境下智能类型提示,该字段亦可写作 types。...exports:提供了一种方法来为不同环境和 JavaScript 风格显示声明如何引入模块,同时限制对其内部部分访问,该字段提案来自:Bare Module Specifier Resolution...npm scripts pre 和 post 执行生命周期依次执行完成如下任务: npm run release 执行任务流程(原文链接可查看大图) 更多关于 package.json 字段功能...另外,我们看到请求拦截器中并没有设置 reject 函数,或许这里可以添加针对 reject 响应函数,用于在发生请求异常后,可直接不需要重试请求,因为错误请求配置必然是无意义网络请求,重试请求也是无意义

    1.4K20

    创建一个双模式跨运行时 JavaScript 包

    「使用 deno.json 更新构建管道流」 要记录这一构建步骤,可以修改 deno.json task部分,将 NPM 构建步骤包括在内。...它指向包 CommonJS 版本,通常位于 dist 目录中。 「"browser"」 :该字段用于指定浏览器环境替代入口点。它指向包最小化版本,以增强与浏览器兼容性。...「"module"」 :与 "main"字段类似,该字段用于指定 ESM 环境入口点。它指向软件包 ESM 版本。...「"types"」 :此字段指明软件包 TypeScript 声明文件(.d.ts)位置。这些文件为 TypeScript 用户提供了类型信息,改善了开发人员体验。...「"exports"」 :该字段是一项最新功能,允许你定义如何导入包。它为 ESM、CommonJS 和浏览器环境指定了不同导入路径,确保了跨运行时流畅兼容性。

    15110

    带你了解一些package.json骚操作

    描述信息(description & keywords) description 字段用于添加模块描述信息,便于用户了解该模块。 keywords 字段用于给模块添加关键字。...假如你项目是一个 npm 包,当用户安装你包后,require('my-module') 返回是 main 字段中所列出文件 module.exports 属性。...发布文件配置(files) files 字段用于描述我们使用 npm publish 命令后推送到 npm 服务器文件列表,如果指定文件夹,则文件夹内所有内容都会包含进来。...指定项目 node 版本(engines) 有时候,拉一个项目的时候,由于和其他开发使用 node 版本不同,导致会出现很多奇奇怪怪问题(如某些依赖安装报错、依赖安装完项目跑步起来等)。...总结 本文介绍了 package.json 多种常见配置字段及作用,并通过例子加深大家对 package.json这些字段理解。

    1.9K40
    领券