Skip to content
This repository has been archived by the owner on Aug 4, 2021. It is now read-only.

modulesOnly option #96

Merged
merged 3 commits into from
Apr 1, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -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' }
Expand Down
16 changes: 14 additions & 2 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 );
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -91,7 +92,18 @@ export default function nodeResolve ( options = {} ) {
}
}

fulfil( resolved );
if ( resolved && 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 );
}
}
);
});
Expand Down
3 changes: 3 additions & 0 deletions test/samples/deep-import-non-module/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import deep from 'foo/deep';

console.log( deep );
11 changes: 11 additions & 0 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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' ] );
});
});
});