Skip to content

Commit 59d1d9c

Browse files
committedMar 13, 2019
feat: use rollup-plugin-node-resolve
1 parent 21bb90c commit 59d1d9c

File tree

4 files changed

+54
-59
lines changed

4 files changed

+54
-59
lines changed
 

‎package.json

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
"rollup-plugin-commonjs": "^9.2.0",
4747
"rollup-plugin-hashbang": "^2.2.2",
4848
"rollup-plugin-json": "^3.1.0",
49+
"rollup-plugin-node-resolve": "^4.0.1",
4950
"rollup-plugin-postcss": "^2.0.3",
5051
"rollup-plugin-replace": "^2.1.0",
5152
"rollup-plugin-terser": "^4.0.2"

‎src/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ import merge from 'lodash/merge'
1919
import waterfall from 'p-waterfall'
2020
import spinner from './spinner'
2121
import logger from './logger'
22-
import nodeResolvePlugin from './plugins/node-resolve'
2322
import progressPlugin from './plugins/progress'
23+
import nodeResolvePlugin from './plugins/node-resolve'
2424
import configLoader from './config-loader'
2525
import isExternal from './utils/is-external'
2626
import getBanner from './utils/get-banner'
@@ -207,8 +207,8 @@ export class Bundler {
207207

208208
plugins.push(
209209
nodeResolvePlugin({
210-
bundleNodeModules,
211210
rootDir: this.rootDir,
211+
bundleNodeModules,
212212
externals: config.externals
213213
})
214214
)

‎src/plugins/node-resolve.ts

+37-57
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,65 @@
1-
import path from 'path'
2-
import slash from 'slash'
31
import builtinModules from 'builtin-modules'
4-
import resolve from '../resolve'
52
import { NormalizedConfig } from '../index'
63
import isExternal from '../utils/is-external'
74
import logger from '../logger'
85

96
interface Options {
10-
bundleNodeModules?: boolean | string[]
117
rootDir: string
8+
bundleNodeModules?: boolean | string[]
129
externals: NormalizedConfig['externals']
1310
}
1411

1512
export default (options: Options) => {
16-
return {
17-
name: 'bili-node-resolve',
18-
19-
resolveId: async (importee: string, importer?: string) => {
20-
if (/\0/.test(importee)) {
21-
return null
22-
}
23-
const isValidPath = !/[<>:"|?*]/.test(importee)
24-
if (!isValidPath) {
25-
return null
26-
}
27-
28-
// Exclude built-in modules
29-
if (builtinModules.includes(importee)) {
30-
return false
31-
}
13+
const plugin = require('rollup-plugin-node-resolve')({
14+
extensions: ['.js', '.json', '.jsx', '.ts', '.tsx'],
15+
preferBuiltins: true,
16+
jsnext: true,
17+
module: true
18+
})
3219

33-
importee = slash(importee)
34-
if (importer) {
35-
importer = slash(importer)
36-
}
20+
return {
21+
...plugin,
3722

38-
let id: string
23+
name: 'bili-custom-resolve',
3924

40-
try {
41-
id = await resolve(importee, {
42-
cwd: importer ? path.dirname(importer) : options.rootDir
43-
})
44-
} catch (err) {
45-
if (!importer) {
46-
// An entry file should not be marked as external if it doesn't exist
47-
return null
48-
}
49-
return false
50-
}
25+
async resolveId(importee: string, importer?: string) {
26+
const id = await plugin.resolveId(
27+
importee,
28+
importer || `${options.rootDir}/__no_importer__.js`
29+
)
5130

52-
// If we don't intend to bundle node_modules
53-
// Mark it as external
54-
if (/node_modules/.test(id)) {
55-
if (!options.bundleNodeModules) {
31+
if (typeof id === 'string') {
32+
// Exclude built-in modules
33+
if (builtinModules.includes(id)) {
5634
return false
5735
}
58-
if (Array.isArray(options.bundleNodeModules)) {
59-
const shouldBundle = options.bundleNodeModules.some(name =>
60-
id.includes(`/node_modules/${name}/`)
61-
)
62-
if (!shouldBundle) {
36+
37+
// If we don't intend to bundle node_modules
38+
// Mark it as external
39+
if (/node_modules/.test(id)) {
40+
if (!options.bundleNodeModules) {
6341
return false
6442
}
43+
if (Array.isArray(options.bundleNodeModules)) {
44+
const shouldBundle = options.bundleNodeModules.some(name =>
45+
id.includes(`/node_modules/${name}/`)
46+
)
47+
if (!shouldBundle) {
48+
return false
49+
}
50+
}
6551
}
66-
}
6752

68-
if (isExternal(options.externals, id, importer)) {
69-
return false
70-
}
53+
if (isExternal(options.externals, id, importer)) {
54+
return false
55+
}
7156

72-
if (/node_modules/.test(id) && !/^\.?\//.test(importee)) {
73-
logger.debug(`Bundled ${importee} because ${importer} imported it.`)
57+
if (/node_modules/.test(id) && !/^\.?\//.test(importee)) {
58+
logger.debug(`Bundled ${importee} because ${importer} imported it.`)
59+
}
7460
}
7561

7662
return id
77-
},
78-
79-
transform(code: string, id: string) {
80-
// if (id.endsWith('.js')) {
81-
// return `// module: ${id}\n${code}`
82-
// }
8363
}
8464
}
8565
}

‎yarn.lock

+14
Original file line numberDiff line numberDiff line change
@@ -4257,6 +4257,11 @@ is-installed-globally@^0.1.0:
42574257
global-dirs "^0.1.0"
42584258
is-path-inside "^1.0.0"
42594259

4260+
is-module@^1.0.0:
4261+
version "1.0.0"
4262+
resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
4263+
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
4264+
42604265
is-npm@^1.0.0:
42614266
version "1.0.0"
42624267
resolved "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
@@ -7814,6 +7819,15 @@ rollup-plugin-json@^3.1.0:
78147819
dependencies:
78157820
rollup-pluginutils "^2.3.1"
78167821

7822+
rollup-plugin-node-resolve@^4.0.1:
7823+
version "4.0.1"
7824+
resolved "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.0.1.tgz#f95765d174e5daeef9ea6268566141f53aa9d422"
7825+
integrity sha512-fSS7YDuCe0gYqKsr5OvxMloeZYUSgN43Ypi1WeRZzQcWtHgFayV5tUSPYpxuaioIIWaBXl6NrVk0T2/sKwueLg==
7826+
dependencies:
7827+
builtin-modules "^3.0.0"
7828+
is-module "^1.0.0"
7829+
resolve "^1.10.0"
7830+
78177831
rollup-plugin-postcss@^2.0.3:
78187832
version "2.0.3"
78197833
resolved "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-2.0.3.tgz#1fd5b7e1fc7545cb0084d9c99d11b259e41a05e6"

0 commit comments

Comments
 (0)
Please sign in to comment.