All Projects → privatenumber → Esbuild Loader

privatenumber / Esbuild Loader

Licence: mit
⚡️ Speed up your Webpack build with esbuild

Programming Languages

typescript
32286 projects
esnext
17 projects

Projects that are alternatives of or similar to Esbuild Loader

Tris Webpack Boilerplate
A Webpack boilerplate for static websites that has all the necessary modern tools and optimizations built-in. Score a perfect 10/10 on performance.
Stars: ✭ 1,016 (-18.39%)
Mutual labels:  webpack, babel, optimization
Static Site Boilerplate
A better workflow for building modern static websites.
Stars: ✭ 1,633 (+31.16%)
Mutual labels:  webpack, minification, babel
Static Html Webpack Boilerplate
🔮 modern tooling for old-school static webpage development
Stars: ✭ 226 (-81.85%)
Mutual labels:  webpack, minification, babel
React Boilerplate
Production-ready boilerplate for building universal web apps with React and Redux
Stars: ✭ 53 (-95.74%)
Mutual labels:  webpack, babel
Tkframework
react + relay + redux + saga + graphql + webpack
Stars: ✭ 83 (-93.33%)
Mutual labels:  webpack, babel
React Es6 Padawan To Jedi Book
Uma introdução simples e completa para React usando ES6 e Babel.
Stars: ✭ 46 (-96.31%)
Mutual labels:  webpack, babel
Express React Boilerplate
🚀🚀🚀 This is a tool that helps programmers create Express & React projects easily base on react-cool-starter.
Stars: ✭ 32 (-97.43%)
Mutual labels:  webpack, babel
Spa Starter Kit
📦 Quick starter kit for booting up a NodeJS container with React, webpack, babel/ES2015, Redux, and more.
Stars: ✭ 81 (-93.49%)
Mutual labels:  webpack, babel
Vue Dropload
vue下拉加载,简单路由,模态框组件等开发
Stars: ✭ 55 (-95.58%)
Mutual labels:  webpack, babel
Astexplorer.app
https://astexplorer.net with ES Modules support and Hot Reloading
Stars: ✭ 65 (-94.78%)
Mutual labels:  webpack, babel
Vue Web Extension
🛠️ A Vue CLI 3+ preset (previously a Vue CLI 2 boilerplate) for quickly starting a web extension with Vue, Babel, ESLint and more!
Stars: ✭ 1,147 (-7.87%)
Mutual labels:  webpack, babel
Starter React Flux
Generate your React PWA project with TypeScript or JavaScript
Stars: ✭ 65 (-94.78%)
Mutual labels:  webpack, babel
Eleventy Webpack
A barebone Eleventy and Webpack boilerplate 🎈
Stars: ✭ 68 (-94.54%)
Mutual labels:  webpack, babel
Tested
Angular Material in MEAN Stack Website Source
Stars: ✭ 35 (-97.19%)
Mutual labels:  webpack, babel
Js Toolbox
CLI tool to simplify the development of JavaScript apps/libraries with little to no configuration. (WORK IN PROGRESS/PACKAGE NOT PUBLISHED).
Stars: ✭ 53 (-95.74%)
Mutual labels:  webpack, babel
Budgeting
Budgeting - React + Redux + Webpack (tree shaking) Sample App
Stars: ✭ 971 (-22.01%)
Mutual labels:  webpack, babel
React Starter Kit
React Starter Kit - Fiercely quick front-end boilerplate and workflows, React.js, Babel, PostCSS, Webpack
Stars: ✭ 61 (-95.1%)
Mutual labels:  webpack, babel
Mostly
They mostly come at night; mostly.
Stars: ✭ 78 (-93.73%)
Mutual labels:  webpack, babel
That React App You Want
That react app you always wanted: [email protected], [email protected], postCSS, purifycss, dll's and code splitting examples, bregh. Highly opinionated but you better like it.
Stars: ✭ 27 (-97.83%)
Mutual labels:  webpack, babel
Skyvow.github.io
🐶 My resume - 个人简历
Stars: ✭ 27 (-97.83%)
Mutual labels:  webpack, babel

esbuild-loader

Speed up your Webpack build with esbuild! 🔥

esbuild is a JavaScript bundler written in Go that supports blazing fast ESNext & TypeScript transpilation and JS minification.

esbuild-loader lets you harness the speed of esbuild in your Webpack build by offering faster alternatives for transpilation (eg. babel-loader/ts-loader) and minification (eg. Terser)!

Curious how much faster your build will be? See what users are saying.

If you like this project, please star it & follow me to see what other cool projects I'm working on! ❤️

🚀 Install

npm i -D esbuild-loader

🚦 Quick Setup

Javascript & JSX transpilation (eg. Babel)

In webpack.config.js:

  module.exports = {
    module: {
      rules: [
-       {
-         test: /\.js$/,
-         use: 'babel-loader',
-       },
+       {
+         test: /\.js$/,
+         loader: 'esbuild-loader',
+         options: {
+           loader: 'jsx', // Remove this if you're not using JSX
+           target: 'es2015' // Syntax to compile to (see options below for possible values)
+         }
+       },

        ...
      ],
    },
  }

TypeScript & TSX

In webpack.config.js:

  module.exports = {
    module: {
      rules: [
-       {
-         test: /\.tsx?$/,
-         use: 'ts-loader'
-       },
+       {
+         test: /\.tsx?$/,
+         loader: 'esbuild-loader',
+         options: {
+           loader: 'tsx', // Or 'ts' if you don't need tsx
+           target: 'es2015'
+         }
+       },

        ...
      ]
    },
  }

Configuration

If you have a tsconfig.json file, esbuild-loader will automatically detect it.

Alternatively, you can also pass it in directly via the tsconfigRaw option:

  {
      test: /\.tsx?$/,
      loader: 'esbuild-loader',
      options: {
          loader: 'tsx',
          target: 'es2015',
+         tsconfigRaw: require('./tsconfig.json')
      }
  }

⚠️ esbuild only supports a subset of tsconfig options (see TransformOptions interface) and does not do type-checks. It's recommended to use a type-aware IDE or tsc --noEmit for type-checking instead. It is also recommended to enable isolatedModules and esModuleInterop options in your tsconfig by the esbuild docs.

Minification (eg. Terser)

You can replace JS minifiers like Terser or UglifyJs. Checkout the benchmarks to see how much faster esbuild is. The target option tells esbuild that it can use newer JS syntax to perform better minification.

In webpack.config.js:

+ const { ESBuildMinifyPlugin } = require('esbuild-loader')

  module.exports = {
    ...,

+   optimization: {
+     minimizer: [
+       new ESBuildMinifyPlugin({
+         target: 'es2015' // Syntax to compile to (see options below for possible values)
+       })
+     ]
+   },
  }

💁‍♀️ Protip: Use the minify plugin in-place of the loader to transpile your JS

If you're not using TypeScript, JSX, or any syntax unsupported by Webpack, you can also leverage the minifier for transpilation (as an alternative to Babel). It will be faster because there's less files to work on and will produce a smaller output because the polyfills will only be bundled once for the entire build instead of per file. Simply set the target option on the minifier to specify which support level you want.

Examples

If you'd like to see working Webpack builds that use esbuild-loader for basic JS, React, TypeScript, or Next.js, check out the examples repo.

⚙️ Options

Loader

The loader supports options from esbuild.

  • target String ('es2015') - Environment target (e.g. es2016, chrome80, esnext)
  • loader String ('js') - Which loader to use to handle file
    • Possible values: js, jsx, ts, tsx, json, text, base64, file, dataurl, binary
  • jsxFactory String - What to use instead of React.createElement
  • jsxFragment String - What to use instead of React.Fragment

Enable source-maps via devtool

MinifyPlugin

  • target String|Aray<String> ('esnext') - Environment target (e.g. 'es2016', ['chrome80', 'esnext'])
  • minify Boolean (true) - Sets all minify flags
  • minifyWhitespace Boolean - Remove whitespace
  • minifyIdentifiers Boolean - Shorten identifiers
  • minifySyntax Boolean - Use equivalent but shorter syntax
  • sourcemap Boolean (defaults to Webpack devtool) - Whether to emit sourcemaps
  • include String|RegExp|Array<String|RegExp> - Filter assets for inclusion in minification
  • exclude String|RegExp|Array<String|RegExp> - Filter assets for exclusion in minification

💼 License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].