0.2.1 • Published 4 years ago

esbuild-plugin-alias v0.2.1

Weekly downloads
22
License
MIT
Repository
github
Last release
4 years ago

esbuild-plugin-alias

npm

esbuild plugin for path aliases.

Rationale

Sometimes it's useful to have dynamic imports that resolves into different files depending on some conditions (e.g. env variables).

Installation

npm install --save-dev esbuild-plugin-alias

Usage

Define plugin in the plugins section of esbuild config like this:

const esbuild = require('esbuild');
const alias = require('esbuild-plugin-alias');

esbuild.build({
  // ...
  plugins: [
    alias({
      'imported-path': '/home/user/lib/src/resolved-path',
    }),
  ],
})

Note: esbuild requires resolved paths to be absolute. So, make sure that values in plugin's config object are absolute paths.

If you need to find a path to an installed dep, you may use require.resolve. E.g.:

alias({
  'react-dom': process.env.NODE_ENV === 'dev' 
    ? require.resolve('@hot-loader/react-dom')
    : require.resolve('react-dom'),
}),

Example

Having this input file:

// src/app.js
import settings from 'settings.env';

console.log(settings);

And esbuild config like this:

// config/build.js
const path = require('path');
const esbuild = require('esbuild');
const alias = require('esbuild-plugin-alias');

esbuild.build({
  entryPoints: ['in.js'],
  bundle: true,
  outfile: 'out.js',
  plugins: [
    alias({
      'settings.env': path.resolve(__dirname, `../src/settings.${process.env.NODE_ENV}.js`),
    }),
  ],
}).catch(err => process.exit(1));

You will get src/settings.dev.js loaded instead of settings.env when NODE_ENV equals dev.

Check test/ for more detailed example.

vite-dynamic-theme@infinitebrahmanuniverse/nolb-esb@everything-registry/sub-chunk-1597@wacoco/ytarattarat-servertesting-storybookvite-vue-plugin-themevite-plugin-theme-vite3vite-plugin-theme2vite-plugin-themetestvite-plugin-ent-themevite-plugin-themevite-plugin-theme-fixvite-plugin-theme-of-jkvite-plugin-theme-vvitedgehabla-ndkkraftjs@xiaobai521/vite-plugin-theme@xlaoyu/vite-plugin-theme@tuonina/vite-plugin-theme@tinqjs/tinjs-cli@trinapower/vite-plugin-theme@vgd/esbuild-util@vgd/util@zwkang-dev/simple-chatgpt-cli@hahahoarder/strawberry-uianci-react@olympus-ui/buildtype-libaryvise-ssr@linxia-org/embedsmicrobundle-esnc-vite-plugin-themenovacap-componentsobit-vite-plugin-themenode-red-contrib-bundlernc-nc-vite-plugin-themepolyglot-component-libraryshaina@nppkg/react-dnd@nostrband/ndk@img-arena/img-ui-mui-theme@img-arena/ui-core@fleekxyz/next@franklinjs/react@polymita/server@shawnwu-vben/vite-plugin-themeesbuild-bundlerexbuildfe-ent-theme-apife-ent-theme-utilfix-vite-plugin-themeflue3@casuma/embeds@basejump-xyz/permaweb-libs@rys-fe/vite-plugin-themechr-nodeclintel-vite-themebegcode-vite-plugin-themebutter-bundlerdevito@junk-temporary-prototypes/builder-manager@juanaraneta/dept-central-lib-client@ms-cloudpack/local-dev-service@daip_frontend/vite-plugin-theme@kirklin/vite-plugin-vben-theme@dimcheify/dimui@digitalrakesh/jsui@myadbox/exoplanet-deployment@kozmoai/nodebox@luciadias/storybook-notimation@itayn-fireberry-org/itayn-test@skedulr/nebula-ui-library@codingdud/coolicons@coderoot/react-scripts@quikdev/js
0.2.1

4 years ago

0.2.0

4 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago