| 'use strict'; |
| |
| var path = require('path'); |
| |
| function replaceExt(npath, ext) { |
| if (typeof npath !== 'string') { |
| return npath; |
| } |
| |
| if (npath.length === 0) { |
| return npath; |
| } |
| |
| var nFileName = path.basename(npath, path.extname(npath)) + ext; |
| var nFilepath = path.join(path.dirname(npath), nFileName); |
| |
| // Because `path.join` removes the head './' from the given path. |
| // This removal can cause a problem when passing the result to `require` or |
| // `import`. |
| if (startsWithSingleDot(npath)) { |
| return '.' + path.sep + nFilepath; |
| } |
| |
| return nFilepath; |
| } |
| |
| function startsWithSingleDot(fpath) { |
| var first2chars = fpath.slice(0, 2); |
| return (first2chars === '.' + path.sep) || |
| (first2chars === './'); |
| } |
| |
| module.exports = replaceExt; |