Skip to content

Commit f320365

Browse files
committed
Add support for dev deps
1 parent 41ff0c0 commit f320365

File tree

5 files changed

+33
-2
lines changed

5 files changed

+33
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ Pass an object to `externalizeDeps` to override the default configuration.
3939
// These are the default values.
4040
externalizeDeps({
4141
deps: true,
42+
devDeps: false,
4243
nodeBuiltins: true,
4344
optionalDeps: true,
4445
peerDeps: true,

src/index.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type { Plugin } from 'vite'
55

66
interface UserOptions {
77
deps: boolean,
8+
devDeps: boolean,
89
nodeBuiltins: boolean,
910
optionalDeps: boolean,
1011
peerDeps: boolean,
@@ -18,6 +19,7 @@ const parseFile = (file: string) => {
1819
export const externalizeDeps = (options: Partial<UserOptions> = {}): Plugin => {
1920
const optionsResolved: UserOptions = {
2021
deps: true,
22+
devDeps: false,
2123
nodeBuiltins: true,
2224
optionalDeps: true,
2325
peerDeps: true,
@@ -31,7 +33,12 @@ export const externalizeDeps = (options: Partial<UserOptions> = {}): Plugin => {
3133
config: (_config, _env) => {
3234
if (existsSync(optionsResolved.useFile)) {
3335
const externalDeps = new Set<RegExp>()
34-
const { dependencies = {}, optionalDependencies = {}, peerDependencies = {} } = parseFile(optionsResolved.useFile)
36+
const {
37+
dependencies = {},
38+
devDependencies = {},
39+
optionalDependencies = {},
40+
peerDependencies = {},
41+
} = parseFile(optionsResolved.useFile)
3542

3643
if (optionsResolved.deps) {
3744
Object.keys(dependencies).forEach((dep) => {
@@ -41,6 +48,14 @@ export const externalizeDeps = (options: Partial<UserOptions> = {}): Plugin => {
4148
})
4249
}
4350

51+
if (optionsResolved.devDeps) {
52+
Object.keys(devDependencies).forEach((dep) => {
53+
const depMatcher = new RegExp(`^${dep}(?:/.+)?$`)
54+
55+
externalDeps.add(depMatcher)
56+
})
57+
}
58+
4459
if (optionsResolved.nodeBuiltins) {
4560
builtinModules.forEach((builtinModule) => {
4661
const builtinMatcher = new RegExp(`^(?:node:)?${builtinModule}$`)

test/entry.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,10 @@ import path from 'path'
22
import path2 from 'node:path'
33
import { resolve } from 'path'
44
import chalk from 'chalk'
5+
import { defineConfig } from 'vite'
6+
// @ts-ignore
7+
import esbuild from 'esbuild'
8+
// @ts-ignore
9+
import rollup from 'rollup'
510

6-
console.log(path, path2, resolve, chalk)
11+
console.log(path, path2, resolve, chalk, esbuild, defineConfig, rollup)

test/test.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,14 @@
33
"packageManager": "[email protected]",
44
"dependencies": {
55
"chalk": "^5.0.1"
6+
},
7+
"devDependencies": {
8+
"vite": "^3.0.0"
9+
},
10+
"optionalDependencies": {
11+
"esbuild": "^0.0.0"
12+
},
13+
"peerDependencies": {
14+
"rollup": "^2.0.0"
615
}
716
}

test/vite.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export default defineConfig({
1515
// We need nodeResolve to resolve dependencies of chalk.
1616
nodeResolve(),
1717
externalizeDeps({
18+
devDeps: true,
1819
useFile: './test/test.json',
1920
}),
2021
],

0 commit comments

Comments
 (0)