mirror of
https://github.com/jsdoc/jsdoc.git
synced 2025-12-08 19:46:11 +00:00
refactor(jsdoc): remove jsdoc/fs
BREAKING CHANGE: Removed `jsdoc/fs`. Use `@jsdoc/core.util.fs` and other packages instead.
This commit is contained in:
parent
fc2631fce0
commit
b8316d8933
@ -215,7 +215,7 @@ module.exports = (() => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function readPackageJson(filepath) {
|
function readPackageJson(filepath) {
|
||||||
const fs = require('jsdoc/fs');
|
const fs = require('fs');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return stripJsonComments( fs.readFileSync(filepath, 'utf8') );
|
return stripJsonComments( fs.readFileSync(filepath, 'utf8') );
|
||||||
|
|||||||
@ -1,110 +0,0 @@
|
|||||||
/**
|
|
||||||
* Extended version of the standard `fs` module.
|
|
||||||
* @module jsdoc/fs
|
|
||||||
*/
|
|
||||||
const fs = require('fs');
|
|
||||||
const path = require('path');
|
|
||||||
const mkdirp = require('mkdirp');
|
|
||||||
|
|
||||||
const ls = exports.ls = (dir, recurse, _allFiles, _path) => {
|
|
||||||
let file;
|
|
||||||
let files;
|
|
||||||
let isFile;
|
|
||||||
|
|
||||||
// first pass
|
|
||||||
if (_path === undefined) {
|
|
||||||
_allFiles = [];
|
|
||||||
_path = [dir];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!_path.length) {
|
|
||||||
return _allFiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (recurse === undefined) {
|
|
||||||
recurse = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
isFile = fs.statSync(dir).isFile();
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
isFile = false;
|
|
||||||
}
|
|
||||||
if (isFile) {
|
|
||||||
files = [dir];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
files = fs.readdirSync(dir);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0, l = files.length; i < l; i++) {
|
|
||||||
file = String(files[i]);
|
|
||||||
|
|
||||||
// skip dot files
|
|
||||||
if (file.match(/^\.[^./\\]/)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( fs.statSync(path.join(_path.join('/'), file)).isDirectory() ) {
|
|
||||||
// it's a directory
|
|
||||||
_path.push(file);
|
|
||||||
|
|
||||||
if (_path.length - 1 < recurse) {
|
|
||||||
ls(_path.join('/'), recurse, _allFiles, _path);
|
|
||||||
}
|
|
||||||
_path.pop();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// it's a file
|
|
||||||
_allFiles.push( path.normalize(path.join(_path.join('/'), file)) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return _allFiles;
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.toDir = _path => {
|
|
||||||
let isDirectory;
|
|
||||||
|
|
||||||
_path = path.normalize(_path);
|
|
||||||
|
|
||||||
try {
|
|
||||||
isDirectory = fs.statSync(_path).isDirectory();
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
isDirectory = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isDirectory) {
|
|
||||||
return _path;
|
|
||||||
} else {
|
|
||||||
return path.dirname(_path);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.mkPath = _path => {
|
|
||||||
if ( Array.isArray(_path) ) {
|
|
||||||
_path = _path.join('');
|
|
||||||
}
|
|
||||||
|
|
||||||
mkdirp.sync(_path);
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.copyFileSync = (inFile, outDir, fileName) => {
|
|
||||||
outDir = outDir || '';
|
|
||||||
fileName = fileName || path.basename(inFile);
|
|
||||||
|
|
||||||
fs.copyFileSync(inFile, path.join(outDir, fileName));
|
|
||||||
};
|
|
||||||
|
|
||||||
const alwaysOverride = {
|
|
||||||
'copyFileSync': true
|
|
||||||
};
|
|
||||||
|
|
||||||
Object.keys(fs).forEach(member => {
|
|
||||||
if (!alwaysOverride[member]) {
|
|
||||||
exports[member] = fs[member];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
@ -3,7 +3,7 @@
|
|||||||
* @module jsdoc/readme
|
* @module jsdoc/readme
|
||||||
*/
|
*/
|
||||||
const env = require('jsdoc/env');
|
const env = require('jsdoc/env');
|
||||||
const fs = require('jsdoc/fs');
|
const fs = require('fs');
|
||||||
const markdown = require('jsdoc/util/markdown');
|
const markdown = require('jsdoc/util/markdown');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -5,7 +5,7 @@ const _ = require('lodash');
|
|||||||
const astNode = require('jsdoc/src/astnode');
|
const astNode = require('jsdoc/src/astnode');
|
||||||
const { conf } = require('jsdoc/env');
|
const { conf } = require('jsdoc/env');
|
||||||
const { EventEmitter } = require('events');
|
const { EventEmitter } = require('events');
|
||||||
const fs = require('jsdoc/fs');
|
const fs = require('fs');
|
||||||
const logger = require('jsdoc/util/logger');
|
const logger = require('jsdoc/util/logger');
|
||||||
const name = require('jsdoc/name');
|
const name = require('jsdoc/name');
|
||||||
const { Syntax } = require('jsdoc/src/syntax');
|
const { Syntax } = require('jsdoc/src/syntax');
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
/**
|
/**
|
||||||
* @module jsdoc/src/scanner
|
* @module jsdoc/src/scanner
|
||||||
* @requires module:jsdoc/fs
|
|
||||||
*/
|
*/
|
||||||
const { EventEmitter } = require('events');
|
const { EventEmitter } = require('events');
|
||||||
const fs = require('jsdoc/fs');
|
|
||||||
const logger = require('jsdoc/util/logger');
|
const logger = require('jsdoc/util/logger');
|
||||||
|
const { lsSync } = require('@jsdoc/core').util.fs;
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
const { statSync } = require('fs');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @extends module:events.EventEmitter
|
* @extends module:events.EventEmitter
|
||||||
@ -32,7 +32,7 @@ class Scanner extends EventEmitter {
|
|||||||
const filepath = path.resolve(process.cwd(), decodeURIComponent($));
|
const filepath = path.resolve(process.cwd(), decodeURIComponent($));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
currentFile = fs.statSync(filepath);
|
currentFile = statSync(filepath);
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
logger.error('Unable to find the source file or directory %s', filepath);
|
logger.error('Unable to find the source file or directory %s', filepath);
|
||||||
@ -44,7 +44,7 @@ class Scanner extends EventEmitter {
|
|||||||
filePaths.push(filepath);
|
filePaths.push(filepath);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
filePaths = filePaths.concat( fs.ls(filepath, depth) );
|
filePaths = filePaths.concat(lsSync(filepath, depth));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
* @module jsdoc/template
|
* @module jsdoc/template
|
||||||
*/
|
*/
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const fs = require('jsdoc/fs');
|
const fs = require('fs');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -2,8 +2,9 @@
|
|||||||
* @module jsdoc/tutorial/resolver
|
* @module jsdoc/tutorial/resolver
|
||||||
*/
|
*/
|
||||||
const env = require('jsdoc/env');
|
const env = require('jsdoc/env');
|
||||||
const fs = require('jsdoc/fs');
|
const fs = require('fs');
|
||||||
const logger = require('jsdoc/util/logger');
|
const logger = require('jsdoc/util/logger');
|
||||||
|
const { lsSync } = require('@jsdoc/core').util.fs;
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const stripBom = require('strip-bom');
|
const stripBom = require('strip-bom');
|
||||||
const tutorial = require('jsdoc/tutorial');
|
const tutorial = require('jsdoc/tutorial');
|
||||||
@ -96,7 +97,9 @@ exports.addTutorial = current => {
|
|||||||
exports.load = filepath => {
|
exports.load = filepath => {
|
||||||
let content;
|
let content;
|
||||||
let current;
|
let current;
|
||||||
const files = fs.ls(filepath, env.opts.recurse ? env.conf.recurseDepth : undefined);
|
const files = lsSync(filepath, {
|
||||||
|
depth: env.opts.recurse ? env.conf.recurseDepth : 0
|
||||||
|
});
|
||||||
let name;
|
let name;
|
||||||
let match;
|
let match;
|
||||||
let type;
|
let type;
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* @module plugins/partial
|
* @module plugins/partial
|
||||||
*/
|
*/
|
||||||
const env = require('jsdoc/env');
|
const env = require('jsdoc/env');
|
||||||
const fs = require('jsdoc/fs');
|
const fs = require('fs');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
|
||||||
exports.handlers = {
|
exports.handlers = {
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const commonPathPrefix = require('common-path-prefix');
|
const commonPathPrefix = require('common-path-prefix');
|
||||||
const env = require('jsdoc/env');
|
const env = require('jsdoc/env');
|
||||||
const fs = require('jsdoc/fs');
|
const fs = require('fs');
|
||||||
const helper = require('jsdoc/util/templateHelper');
|
const helper = require('jsdoc/util/templateHelper');
|
||||||
const logger = require('jsdoc/util/logger');
|
const logger = require('jsdoc/util/logger');
|
||||||
|
const { lsSync } = require('@jsdoc/core').util.fs;
|
||||||
|
const mkdirpSync = require('mkdirp').sync;
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const { taffy } = require('taffydb');
|
const { taffy } = require('taffydb');
|
||||||
const template = require('jsdoc/template');
|
const template = require('jsdoc/template');
|
||||||
@ -407,6 +409,12 @@ function buildNav(members) {
|
|||||||
return nav;
|
return nav;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function sourceToDestination(parentDir, sourcePath, destDir) {
|
||||||
|
const relativeSource = path.relative(parentDir, sourcePath);
|
||||||
|
|
||||||
|
return path.resolve(path.join(destDir, relativeSource));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@param {TAFFY} taffyData See <http://taffydb.com/>.
|
@param {TAFFY} taffyData See <http://taffydb.com/>.
|
||||||
@param {object} opts
|
@param {object} opts
|
||||||
@ -510,44 +518,44 @@ exports.publish = (taffyData, opts, tutorials) => {
|
|||||||
if (packageInfo && packageInfo.name) {
|
if (packageInfo && packageInfo.name) {
|
||||||
outdir = path.join( outdir, packageInfo.name, (packageInfo.version || '') );
|
outdir = path.join( outdir, packageInfo.name, (packageInfo.version || '') );
|
||||||
}
|
}
|
||||||
fs.mkPath(outdir);
|
mkdirpSync(outdir);
|
||||||
|
|
||||||
// copy the template's static files to outdir
|
// copy the template's static files to outdir
|
||||||
fromDir = path.join(templatePath, 'static');
|
fromDir = path.join(templatePath, 'static');
|
||||||
staticFiles = fs.ls(fromDir, 3);
|
staticFiles = lsSync(fromDir);
|
||||||
|
|
||||||
staticFiles.forEach(fileName => {
|
staticFiles.forEach(fileName => {
|
||||||
const toDir = fs.toDir( fileName.replace(fromDir, outdir) );
|
const toPath = sourceToDestination(fromDir, fileName, outdir);
|
||||||
|
|
||||||
fs.mkPath(toDir);
|
mkdirpSync(path.dirname(toPath));
|
||||||
fs.copyFileSync(fileName, toDir);
|
fs.copyFileSync(fileName, toPath);
|
||||||
});
|
});
|
||||||
|
|
||||||
// copy the fonts used by the template to outdir
|
// copy the fonts used by the template to outdir
|
||||||
staticFiles = fs.ls(path.join(require.resolve('open-sans-fonts'), '..', 'open-sans'), 3);
|
staticFiles = lsSync(path.join(require.resolve('open-sans-fonts'), '..', 'open-sans'));
|
||||||
|
|
||||||
staticFiles.forEach(fileName => {
|
staticFiles.forEach(fileName => {
|
||||||
const toDir = path.join(outdir, 'fonts');
|
const toPath = path.join(outdir, 'fonts', path.basename(fileName));
|
||||||
|
|
||||||
if (FONT_NAMES.includes(path.parse(fileName).name)) {
|
if (FONT_NAMES.includes(path.parse(fileName).name)) {
|
||||||
fs.mkPath(toDir);
|
mkdirpSync(path.dirname(toPath));
|
||||||
fs.copyFileSync(fileName, toDir);
|
fs.copyFileSync(fileName, toPath);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// copy the prettify script to outdir
|
// copy the prettify script to outdir
|
||||||
PRETTIFIER_SCRIPT_FILES.forEach(fileName => {
|
PRETTIFIER_SCRIPT_FILES.forEach(fileName => {
|
||||||
const toDir = path.join(outdir, 'scripts');
|
const toPath = path.join(outdir, 'scripts', path.basename(fileName));
|
||||||
|
|
||||||
fs.copyFileSync(
|
fs.copyFileSync(
|
||||||
path.join(require.resolve('code-prettify'), '..', fileName),
|
path.join(require.resolve('code-prettify'), '..', fileName),
|
||||||
toDir
|
toPath
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
// copy the prettify CSS to outdir
|
// copy the prettify CSS to outdir
|
||||||
PRETTIFIER_CSS_FILES.forEach(fileName => {
|
PRETTIFIER_CSS_FILES.forEach(fileName => {
|
||||||
const toDir = path.join(outdir, 'styles');
|
const toPath = path.join(outdir, 'styles', path.basename(fileName));
|
||||||
|
|
||||||
fs.copyFileSync(
|
fs.copyFileSync(
|
||||||
// `require.resolve()` has trouble with this package, so we use an extra-hacky way to
|
// `require.resolve()` has trouble with this package, so we use an extra-hacky way to
|
||||||
@ -562,7 +570,7 @@ exports.publish = (taffyData, opts, tutorials) => {
|
|||||||
'themes',
|
'themes',
|
||||||
fileName
|
fileName
|
||||||
),
|
),
|
||||||
toDir
|
toPath
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -584,11 +592,10 @@ exports.publish = (taffyData, opts, tutorials) => {
|
|||||||
extraStaticFiles = staticFileScanner.scan([filePath], 10, staticFileFilter);
|
extraStaticFiles = staticFileScanner.scan([filePath], 10, staticFileFilter);
|
||||||
|
|
||||||
extraStaticFiles.forEach(fileName => {
|
extraStaticFiles.forEach(fileName => {
|
||||||
const sourcePath = fs.toDir(filePath);
|
const toPath = sourceToDestination(fromDir, fileName, outdir);
|
||||||
const toDir = fs.toDir( fileName.replace(sourcePath, outdir) );
|
|
||||||
|
|
||||||
fs.mkPath(toDir);
|
mkdirpSync(path.dirname(toPath));
|
||||||
fs.copyFileSync(fileName, toDir);
|
fs.copyFileSync(fileName, toPath);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,7 @@ const { createParser } = require('jsdoc/src/parser');
|
|||||||
const { defineTags } = require('jsdoc/tag/dictionary/definitions');
|
const { defineTags } = require('jsdoc/tag/dictionary/definitions');
|
||||||
const dictionary = require('jsdoc/tag/dictionary');
|
const dictionary = require('jsdoc/tag/dictionary');
|
||||||
const env = require('jsdoc/env');
|
const env = require('jsdoc/env');
|
||||||
const fs = require('jsdoc/fs');
|
const fs = require('fs');
|
||||||
const handlers = require('jsdoc/src/handlers');
|
const handlers = require('jsdoc/src/handlers');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ describe('jsdoc/src/parser', () => {
|
|||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const { attachTo } = require('jsdoc/src/handlers');
|
const { attachTo } = require('jsdoc/src/handlers');
|
||||||
const { dirname } = require('jsdoc/env');
|
const { dirname } = require('jsdoc/env');
|
||||||
const fs = require('jsdoc/fs');
|
const fs = require('fs');
|
||||||
const jsdocParser = require('jsdoc/src/parser');
|
const jsdocParser = require('jsdoc/src/parser');
|
||||||
const logger = require('jsdoc/util/logger');
|
const logger = require('jsdoc/util/logger');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user