diff --git a/README.md b/README.md index 5ba9ad7..3560bbc 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,8 @@ module.exports = { // Any esbuild build or transform options go here target: "esnext", }, + // Force bundling of specified dependencies + // noExternals: [], } ``` diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30cd0f1..7685b7c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: 5.3 +lockfileVersion: 5.4 specifiers: '@release-it/conventional-changelog': 3.3.0 @@ -44,17 +44,17 @@ devDependencies: '@types/prettier': 2.3.2 '@types/rimraf': 3.0.2 '@types/source-map-support': 0.5.4 - '@typescript-eslint/eslint-plugin': 4.29.3_5b13bab190e8051f191796d8c4619073 - '@typescript-eslint/parser': 4.29.3_eslint@7.32.0+typescript@4.4.2 + '@typescript-eslint/eslint-plugin': 4.29.3_lmj3vmmq5acr6gixs3mmiymqom + '@typescript-eslint/parser': 4.29.3_s6tmyhlenma325zeskopvid5qe devmoji: 2.3.0 esbuild: 0.12.24 eslint: 7.32.0 eslint-config-prettier: 8.3.0_eslint@7.32.0 eslint-plugin-eslint-comments: 3.2.0_eslint@7.32.0 - eslint-plugin-import: 2.24.2_eslint@7.32.0 - eslint-plugin-jest: 24.4.0_d9bb2f3d4d43fbdec1717750590e3665 + eslint-plugin-import: 2.24.2_gtk3577wvkwyy4krtrxlky5k2e + eslint-plugin-jest: 24.4.0_3g5s6pknip555qlro5ifsdrwmu eslint-plugin-node: 11.1.0_eslint@7.32.0 - eslint-plugin-prettier: 3.4.1_5a48a349ffec60f5257b5f148f5199c3 + eslint-plugin-prettier: 3.4.1_ljekgsp75rqpkjl3l4ki6umzym eslint-plugin-promise: 5.1.0_eslint@7.32.0 eslint-plugin-unicorn: 35.0.0_eslint@7.32.0 husky: 7.0.2 @@ -109,7 +109,7 @@ packages: - supports-color dev: true - /@babel/eslint-parser/7.15.0_@babel+core@7.15.0+eslint@7.32.0: + /@babel/eslint-parser/7.15.0_xw2oyqbzhnjfmqehyjkh3ainty: resolution: {integrity: sha512-+gSPtjSBxOZz4Uh8Ggqu7HbfpB8cT1LwW0DnVVLZEJvzXauiD0Di3zszcBkRmfGGrLdYeHUwcflG7i3tr9kQlw==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -270,6 +270,8 @@ packages: resolution: {integrity: sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.15.0 dev: true /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.15.0: @@ -1010,7 +1012,7 @@ packages: '@types/yargs-parser': 20.2.1 dev: true - /@typescript-eslint/eslint-plugin/4.29.3_5b13bab190e8051f191796d8c4619073: + /@typescript-eslint/eslint-plugin/4.29.3_lmj3vmmq5acr6gixs3mmiymqom: resolution: {integrity: sha512-tBgfA3K/3TsZY46ROGvoRxQr1wBkclbVqRQep97MjVHJzcRBURRY3sNFqLk0/Xr//BY5hM9H2p/kp+6qim85SA==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -1021,8 +1023,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 4.29.3_eslint@7.32.0+typescript@4.4.2 - '@typescript-eslint/parser': 4.29.3_eslint@7.32.0+typescript@4.4.2 + '@typescript-eslint/experimental-utils': 4.29.3_s6tmyhlenma325zeskopvid5qe + '@typescript-eslint/parser': 4.29.3_s6tmyhlenma325zeskopvid5qe '@typescript-eslint/scope-manager': 4.29.3 debug: 4.3.2 eslint: 7.32.0 @@ -1035,7 +1037,7 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils/4.29.3_eslint@7.32.0+typescript@4.4.2: + /@typescript-eslint/experimental-utils/4.29.3_s6tmyhlenma325zeskopvid5qe: resolution: {integrity: sha512-ffIvbytTVWz+3keg+Sy94FG1QeOvmV9dP2YSdLFHw/ieLXWCa3U1TYu8IRCOpMv2/SPS8XqhM1+ou1YHsdzKrg==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -1053,7 +1055,7 @@ packages: - typescript dev: true - /@typescript-eslint/parser/4.29.3_eslint@7.32.0+typescript@4.4.2: + /@typescript-eslint/parser/4.29.3_s6tmyhlenma325zeskopvid5qe: resolution: {integrity: sha512-jrHOV5g2u8ROghmspKoW7pN8T/qUzk0+DITun0MELptvngtMrwUJ1tv5zMI04CYVEUsSrN4jV7AKSv+I0y0EfQ==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -1955,12 +1957,22 @@ packages: /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 dev: true /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 dev: true @@ -2259,14 +2271,34 @@ packages: dependencies: debug: 3.2.7 resolve: 1.20.0 + transitivePeerDependencies: + - supports-color dev: true - /eslint-module-utils/2.6.2: + /eslint-module-utils/2.6.2_qt4hsopk62msjir5iwpa4cmm6e: resolution: {integrity: sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==} engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: + '@typescript-eslint/parser': 4.29.3_s6tmyhlenma325zeskopvid5qe debug: 3.2.7 + eslint-import-resolver-node: 0.3.6 pkg-dir: 2.0.0 + transitivePeerDependencies: + - supports-color dev: true /eslint-plugin-es/3.0.1_eslint@7.32.0: @@ -2291,19 +2323,24 @@ packages: ignore: 5.1.8 dev: true - /eslint-plugin-import/2.24.2_eslint@7.32.0: + /eslint-plugin-import/2.24.2_gtk3577wvkwyy4krtrxlky5k2e: resolution: {integrity: sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==} engines: {node: '>=4'} peerDependencies: + '@typescript-eslint/parser': '*' eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: + '@typescript-eslint/parser': 4.29.3_s6tmyhlenma325zeskopvid5qe array-includes: 3.1.3 array.prototype.flat: 1.2.4 debug: 2.6.9 doctrine: 2.1.0 eslint: 7.32.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.6.2 + eslint-module-utils: 2.6.2_qt4hsopk62msjir5iwpa4cmm6e find-up: 2.1.0 has: 1.0.3 is-core-module: 2.6.0 @@ -2313,9 +2350,13 @@ packages: read-pkg-up: 3.0.0 resolve: 1.20.0 tsconfig-paths: 3.11.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color dev: true - /eslint-plugin-jest/24.4.0_d9bb2f3d4d43fbdec1717750590e3665: + /eslint-plugin-jest/24.4.0_3g5s6pknip555qlro5ifsdrwmu: resolution: {integrity: sha512-8qnt/hgtZ94E9dA6viqfViKBfkJwFHXgJmTWlMGDgunw1XJEGqm3eiPjDsTanM3/u/3Az82nyQM9GX7PM/QGmg==} engines: {node: '>=10'} peerDependencies: @@ -2325,8 +2366,8 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 4.29.3_5b13bab190e8051f191796d8c4619073 - '@typescript-eslint/experimental-utils': 4.29.3_eslint@7.32.0+typescript@4.4.2 + '@typescript-eslint/eslint-plugin': 4.29.3_lmj3vmmq5acr6gixs3mmiymqom + '@typescript-eslint/experimental-utils': 4.29.3_s6tmyhlenma325zeskopvid5qe eslint: 7.32.0 transitivePeerDependencies: - supports-color @@ -2348,7 +2389,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/3.4.1_5a48a349ffec60f5257b5f148f5199c3: + /eslint-plugin-prettier/3.4.1_ljekgsp75rqpkjl3l4ki6umzym: resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} engines: {node: '>=6.0.0'} peerDependencies: @@ -2411,7 +2452,7 @@ packages: eslint: '>=7.0.0' dependencies: '@babel/core': 7.15.0 - '@babel/eslint-parser': 7.15.0_@babel+core@7.15.0+eslint@7.32.0 + '@babel/eslint-parser': 7.15.0_xw2oyqbzhnjfmqehyjkh3ainty eslint: 7.32.0 eslint-visitor-keys: 2.1.0 esquery: 1.4.0 @@ -2729,6 +2770,7 @@ packages: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + requiresBuild: true dev: true optional: true @@ -2913,6 +2955,8 @@ packages: dependencies: '@sindresorhus/is': 0.14.0 '@szmarczak/http-timer': 1.1.2 + '@types/keyv': 3.1.2 + '@types/responselike': 1.0.0 cacheable-request: 6.1.0 decompress-response: 3.3.0 duplexer3: 0.1.4 @@ -5627,6 +5671,7 @@ packages: resolution: {integrity: sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==} engines: {node: '>=0.8.0'} hasBin: true + requiresBuild: true dev: true optional: true diff --git a/src/esbuild.ts b/src/esbuild.ts index 4ad43c4..1fa75f0 100644 --- a/src/esbuild.ts +++ b/src/esbuild.ts @@ -15,6 +15,7 @@ export type TranspileOptions = { type: "bundle" | "transform" debug: boolean esbuild?: CommonOptions & TransformOptions & BuildOptions + noExternal?: string[] } const defaultOptions: TranspileOptions = { type: "bundle", debug: false } @@ -89,6 +90,8 @@ function _bundle( const loaders = getLoaders(options) + const resolvedExternals = [...externals, ...(options?.esbuild?.external ?? [])].filter(name => !options?.noExternal?.includes(name)) + return buildSync({ ...commonOptions, platform: "node", @@ -101,7 +104,7 @@ function _bundle( resolveDir: path.dirname(filename), loader: loaders[ext], }, - external: [...externals, ...(options?.esbuild?.external ?? [])], + external: resolvedExternals, write: false, }) .outputFiles.map((f) => f.text)