34 lines
767 B
JavaScript
34 lines
767 B
JavaScript
|
'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;
|