Socket
Socket
Sign inDemoInstall

@dawnjs/dn-middleware-babel

Package Overview
Dependencies
306
Maintainers
4
Versions
10
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @dawnjs/dn-middleware-babel

Transform code with babel


Version published
Weekly downloads
7
Maintainers
4
Install size
85.0 MB
Created
Weekly downloads
 

Readme

Source

@dawnjs/dn-middleware-babel

npm npm

该中间件提供使用 Babel 进行代码编译,主要用于仅编译不打包场景,如果需要进行资源打包,推荐使用 rollup 或 webpack 中间件

功能亮点

  • 高内聚的 Babel 默认配置,绝大部分场景零配置或者仅需少量配置
  • 支持 TypeScript 及其类型检查
  • 支持 ESM 输出格式

示例

dev:
  - name: '@dawnjs/dn-middleware-babel'
    watch: true

build:
  - name: '@dawnjs/dn-middleware-babel'

配置项说明

支持项目本地使用 Babel 配置文件覆盖默认配置

env

类型:"development" | "production"
默认值:process.env.NODE_ENV

cwd

类型:string
默认值:process.cwd()

文件相对路径的起始点,默认为执行 dn 命令所在的目录,通常情况为项目的根目录

watch

类型:boolean
默认值:false

type

类型:"esm" | "cjs"
默认值:"cjs"

target

类型:"browser" | "node"
默认值:"node"

指定编译结果的目标运行环境

说明:当配置为 "browser" 时,可通过 .browserslistrc 指定目标浏览器范围,详细配置请查看相关文档

srcDir

类型:string
默认值:"src"

include

类型:string[]
默认值:["**/*"]

指定编译需要包含的文件,支持 glob 语法

exclude

类型:string[]
默认值:["**/__test__{,/**}", "**/*.+(test|e2e|spec).+(js|jsx|ts|tsx)"]

指定编译需要排除的文件,支持 glob 语法

output

类型:string
默认值:当 type"esm" 时,为 "es" ;当 type"cjs" 时,为 "lib"

目标输入目录,如果不配置,会根据 type 不同,分别设置不同的目录

runtimeHelpers

类型:boolean | string
默认值:false

配置是否加入 @babel/plugin-transform-runtime 支持,如果为字符串,则用于指定 @babel/runtime@babel/runtime-corejs2@babel/runtime-corejs3 的版本号,具体是哪个包,由 corejs 配置项决定

corejs

类型:false | 2 | 3 | { version: 2 | 3; proposals: boolean }
默认值:false

配置 @babel/preset-envcorejs 选项和 @babel/plugin-transform-runtimecorejs 选项

runtimeHelperscorejs 通常需要配合使用,具体说明如下

当使用 runtimeHelpers 时,corejs 作为 @babel/plugin-transform-runtime 的选项

  • corejsfalse 时,如果项目中未申明 @babel/runtime 依赖,会根据 runtimeHelpers 指定的版本号(未指定时安装最新版本)安装对应的 @babel/runtime 依赖
  • corejs 指定的版本号为 2 时,如果项目中未申明 @babel/runtime-corejs2 依赖,会根据 runtimeHelpers 指定的版本号(未指定时安装最新版本)安装对应的 @babel/runtime-corejs2 依赖
  • corejs 指定的版本号为 3 时,如果项目中未申明 @babel/runtime-corejs3 依赖,会根据 runtimeHelpers 指定的版本号(未指定时安装最新版本)安装对应的 @babel/runtime-corejs3 依赖

jsxRuntime

类型:"automatic" | "classic"
默认值:

配置 @babel/preset-reactruntime 选项

pragma

类型:string
默认值:React.createElement

配置 @babel/preset-reactpragma 选项

pragmaFrag

类型:string
默认值:React.Fragment

配置 @babel/preset-reactpragmaFrag 选项

disableAutoReactRequire

类型:boolean
默认值:

配置是否排除 babel-plugin-react-require。默认情况下不会排除,但如果 jsxRuntime 设置为 "automatic" 并且使用了支持新 JSX Runtime 的 React 版本,则默认排除

extraPresets

类型:any[]
默认值:[]

extraPlugins

类型:any[]
默认值:[]

nodeVersion

类型:string | "current" | true
默认值:"10"

target"node" 时有效,用于指定目标执行环境,可配置项参考相关文档

disableTypeCheck

类型:boolean
默认值:false

说明:默认开启类型检查时,TS 文件会先经过 Typescript 编译一次,产出 JS 文件后再经过 Babel 编译。如果项目本地有配置 tsconfig.json 的话,推荐把其中的 target 配置为 "ESNext" ,把对目标环境的语法转换交给 Babel 处理

noEmit

类型:boolean
默认值:false

不实际执行编译,通常用于作为其他中间件获取 Babel 配置使用,比如 webpackrollup 。有以下几种使用方式:

  • 隐式依赖(推荐)
const { babelOpts } = await ctx.exec({ name: '@dawnjs/dn-middleware-babel', noEmit: true /* any other options */ });
ctx.console.log(babelOpts);
  • 显示依赖(方式一)
build:
  - name: '@dawnjs/dn-middleware-babel'
    noEmit: true
  - name: rollup # 必须紧跟在babel中间件之后

在 rollup 中间件中

export default opts => {
  return async (next, ctx, args) => {
    if (args && args.babelOpts) {
      ctx.console.log(args.babelOpts);
    }
    // ...
  };
};
  • 显示依赖(方式二)
build:
  - name: '@dawnjs/dn-middleware-babel'
    noEmit: true
  - name: some-other-middleware
  - name: rollup # 不需要紧跟在babel中间件之后

在 rollup 中间件中

ctx.on('babel.config', babelOpts => {
  ctx.console.log(babelOpts);
});

Keywords

FAQs

Last updated on 14 Apr 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc