From a8f1b8632adaee6ade61b0016afa1b93fa984baa Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Sat, 1 Apr 2017 00:25:26 -0400 Subject: [PATCH 1/3] remove skip from README --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index 92ef834..eb7f108 100644 --- a/README.md +++ b/README.md @@ -36,12 +36,6 @@ export default { // – see https://github.com/rollup/rollup-plugin-commonjs main: true, // Default: true - // if there's something your bundle requires that you DON'T - // want to include, add it to 'skip'. Local and relative imports - // can be skipped by giving the full filepath. E.g., - // `path.resolve('src/relative-dependency.js')` - skip: [ 'some-big-dependency' ], // Default: [] - // some package.json files have a `browser` field which // specifies alternative files to load for people bundling // for the browser. If that's you, use this option, otherwise From 01ed123119421c1dd1de47d632e8ead274b5c832 Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Sat, 1 Apr 2017 01:09:46 -0400 Subject: [PATCH 2/3] implement modulesOnly option (#91) --- package.json | 4 +++- rollup.config.js | 2 +- src/index.js | 16 ++++++++++++++-- test/samples/deep-import-non-module/main.js | 3 +++ test/test.js | 11 +++++++++++ 5 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 test/samples/deep-import-non-module/main.js diff --git a/package.json b/package.json index d5e1e22..87658dd 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "module": "dist/rollup-plugin-node-resolve.es.js", "jsnext:main": "dist/rollup-plugin-node-resolve.es.js", "scripts": { - "pretest": "rollup -c", + "build": "rollup -c", + "pretest": "npm run build", "test": "mocha", "posttest": "eslint src test/*.js", "prepublish": "npm test", @@ -30,6 +31,7 @@ "dependencies": { "browser-resolve": "^1.11.0", "builtin-modules": "^1.1.0", + "is-module": "^1.0.0", "resolve": "^1.1.6" }, "repository": "rollup/rollup-plugin-node-resolve", diff --git a/rollup.config.js b/rollup.config.js index 8788420..f22bb4b 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -3,7 +3,7 @@ import buble from 'rollup-plugin-buble'; export default { entry: 'src/index.js', plugins: [ buble() ], - external: [ 'path', 'fs', 'builtin-modules', 'resolve', 'browser-resolve' ], + external: [ 'path', 'fs', 'builtin-modules', 'resolve', 'browser-resolve', 'is-module' ], targets: [ { dest: 'dist/rollup-plugin-node-resolve.cjs.js', format: 'cjs' }, { dest: 'dist/rollup-plugin-node-resolve.es.js', format: 'es' } diff --git a/src/index.js b/src/index.js index 684d50e..a55a5db 100644 --- a/src/index.js +++ b/src/index.js @@ -2,6 +2,7 @@ import { dirname, resolve, normalize, sep } from 'path'; import builtins from 'builtin-modules'; import _nodeResolve from 'resolve'; import browserResolve from 'browser-resolve'; +import isModule from 'is-module'; import fs from 'fs'; const COMMONJS_BROWSER_EMPTY = _nodeResolve.sync( 'browser-resolve/empty.js', __dirname ); @@ -48,7 +49,7 @@ export default function nodeResolve ( options = {} ) { id = resolve( importer, '..', importee ); } - return new Promise( fulfil => { + return new Promise( ( fulfil, reject ) => { let disregardResult = false; resolveId( @@ -91,7 +92,18 @@ export default function nodeResolve ( options = {} ) { } } - fulfil( resolved ); + if ( options.modulesOnly ) { + fs.readFile( resolved, 'utf-8', ( err, code ) => { + if ( err ) { + reject( err ); + } else { + const valid = isModule( code ); + fulfil( valid ? resolved : null ); + } + }); + } else { + fulfil( resolved ); + } } ); }); diff --git a/test/samples/deep-import-non-module/main.js b/test/samples/deep-import-non-module/main.js new file mode 100644 index 0000000..7ac076d --- /dev/null +++ b/test/samples/deep-import-non-module/main.js @@ -0,0 +1,3 @@ +import deep from 'foo/deep'; + +console.log( deep ); \ No newline at end of file diff --git a/test/test.js b/test/test.js index f2f4edb..614a687 100644 --- a/test/test.js +++ b/test/test.js @@ -372,4 +372,15 @@ describe( 'rollup-plugin-node-resolve', function () { ); }); }); + + it( 'ignores deep-import non-modules', () => { + return rollup.rollup({ + entry: 'samples/deep-import-non-module/main.js', + plugins: [ nodeResolve({ + modulesOnly: true + }) ] + }).then( bundle => { + assert.deepEqual( bundle.imports, [ 'foo/deep' ] ); + }); + }); }); From 324211c1486cfd75d28b0af30241226aa2572b1d Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Sat, 1 Apr 2017 01:12:50 -0400 Subject: [PATCH 3/3] fix test --- src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index a55a5db..5fe6d4c 100644 --- a/src/index.js +++ b/src/index.js @@ -92,7 +92,7 @@ export default function nodeResolve ( options = {} ) { } } - if ( options.modulesOnly ) { + if ( resolved && options.modulesOnly ) { fs.readFile( resolved, 'utf-8', ( err, code ) => { if ( err ) { reject( err );