@@ -286,44 +286,47 @@ module.exports = create;
286
286
*/
287
287
function requireTransform ( allowBowerRelative , allowProjectRelative ) {
288
288
var BOWER = path . relative ( process . cwd ( ) , bowerDir . sync ( ) ) ;
289
- return transformTools . makeRequireTransform ( 'requireTransform' , null , function transform ( args , opts , done ) {
289
+ var transformOpts = {
290
+ excludeExtensions : [ 'json' ] // must exclude any extension that is not javascript once all transforms have run
291
+ } ;
292
+ return transformTools . makeRequireTransform ( 'requireTransform' , transformOpts , function transform ( args , opts , done ) {
290
293
291
294
// find the original path and transform it so log as it is not relative
292
295
var original = args [ 0 ] ;
293
- var split = original . split ( / [ \\ \/ ] / g) ; // keep delimiters
294
- var firstTerm = split . splice ( 0 , 1 ) . shift ( ) ; // remove the first term from the split
295
- var isTransform = ( firstTerm . length ) && ! ( / ^ \. { 1 , 2 } $ / . test ( firstTerm ) ) ;
296
+ var split = original . split ( / [ \\ \/ ] / g) ; // keep delimiters
297
+ var firstTerm = split . splice ( 0 , 1 ) . shift ( ) ; // remove the first term from the split
298
+ var isTransform = ( firstTerm . length ) && ! ( / ^ \. { 1 , 2 } $ / . test ( firstTerm ) ) ; // must not be relative
296
299
297
300
// first valid result wins
298
301
// if we are not transforming then we fall back to the original value
299
302
var transformed = [
300
303
301
- // current project
302
- isTransform && allowProjectRelative && function resolveProjectRelative ( ) {
303
- var packageJson = require ( path . resolve ( 'package.json' ) ) ;
304
- if ( ( typeof packageJson . name === 'string' ) && ( packageJson . name === firstTerm ) ) {
305
- return slash ( path . resolve ( path . join . apply ( path , split ) ) ) ; // full path to second term onwards
306
- }
307
- } ,
308
-
309
- // bower project
310
- isTransform && allowBowerRelative && function resolveBowerRelative ( ) {
311
- var partial = path . dirname ( original ) ;
312
- var directory = ( partial !== '.' ) && path . resolve ( path . join ( BOWER , partial ) ) ;
313
- var isFound = directory && fs . existsSync ( directory ) && fs . statSync ( directory ) . isDirectory ( ) ;
314
- if ( isFound ) {
315
- return slash ( path . resolve ( path . join ( BOWER , original ) ) ) ; // path is within the bower directory
316
- }
317
- } ,
318
-
319
- // fall back value
320
- original
321
- ]
322
- . map ( function ( candidate ) {
323
- return ( typeof candidate === 'function' ) ? candidate ( ) : candidate ;
324
- } )
325
- . filter ( Boolean )
326
- . shift ( ) ;
304
+ // current project
305
+ isTransform && allowProjectRelative && function resolveProjectRelative ( ) {
306
+ var packageJson = require ( path . resolve ( 'package.json' ) ) ;
307
+ if ( ( typeof packageJson . name === 'string' ) && ( packageJson . name === firstTerm ) ) {
308
+ return slash ( path . resolve ( path . join . apply ( path , split ) ) ) ; // full path to second term onwards
309
+ }
310
+ } ,
311
+
312
+ // bower project
313
+ isTransform && allowBowerRelative && function resolveBowerRelative ( ) {
314
+ var partial = path . dirname ( original ) ;
315
+ var directory = ( partial !== '.' ) && path . resolve ( path . join ( BOWER , partial ) ) ;
316
+ var isFound = directory && fs . existsSync ( directory ) && fs . statSync ( directory ) . isDirectory ( ) ;
317
+ if ( isFound ) {
318
+ return slash ( path . resolve ( path . join ( BOWER , original ) ) ) ; // path is within the bower directory
319
+ }
320
+ } ,
321
+
322
+ // fallback value
323
+ original
324
+ ]
325
+ . map ( function ( candidate ) {
326
+ return ( typeof candidate === 'function' ) ? candidate ( ) : candidate ;
327
+ } )
328
+ . filter ( Boolean )
329
+ . shift ( ) ;
327
330
328
331
// update
329
332
done ( null , 'require("' + transformed + '")' ) ;
0 commit comments