You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
754 B
32 lines
754 B
'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;
|
|
|