Compare commits

..

14 Commits

Author SHA1 Message Date
5493d3cd5d 4.2.10 2017-05-07 20:51:02 +02:00
bd50c122eb fix isDirectory() to return false instead of failing 2017-05-07 20:50:59 +02:00
51f9d76a64 4.2.9 2017-05-02 00:07:43 +02:00
c2f809f9cf revert false assumption 2017-05-02 00:07:39 +02:00
9f311984ac 4.2.8 2017-05-01 23:38:59 +02:00
7515ecf9ce toStringSynv now creates normal strings 2017-05-01 23:38:56 +02:00
fb9766e93b 4.2.7 2017-05-01 22:27:24 +02:00
9cfd147fdc update smartfile cwd 2017-05-01 22:27:15 +02:00
18ff99aef7 4.2.6 2017-05-01 22:07:31 +02:00
46b1151201 update smartfile relative path handling 2017-05-01 22:07:25 +02:00
8e19586e47 4.2.5 2017-05-01 19:49:38 +02:00
9fc581b866 update 2017-05-01 19:49:34 +02:00
dcc85a56b8 4.2.4 2017-04-30 18:13:20 +02:00
4899d454eb added tests for Smartfile instance 2017-04-30 18:13:17 +02:00
8 changed files with 208 additions and 72 deletions

View File

@ -3,7 +3,7 @@ export interface ISmartfileConstructorOptions {
path?: string; path?: string;
contentString?: string; contentString?: string;
contentBuffer?: Buffer; contentBuffer?: Buffer;
cwd?: string; base?: string;
} }
/** /**
* class Smartfile * class Smartfile
@ -14,10 +14,6 @@ export declare class Smartfile {
* the full path of the file on disk * the full path of the file on disk
*/ */
path: string; path: string;
/**
* gulp-compatibility: alias of this.contentBuffer
*/
contents: Buffer;
/** /**
* the content of the file as Buffer * the content of the file as Buffer
*/ */
@ -25,7 +21,7 @@ export declare class Smartfile {
/** /**
* The current working directory of the file * The current working directory of the file
*/ */
cwd: string; base: string;
/** /**
* sync the file with disk * sync the file with disk
*/ */
@ -35,11 +31,6 @@ export declare class Smartfile {
* @param optionsArg * @param optionsArg
*/ */
constructor(optionsArg: ISmartfileConstructorOptions); constructor(optionsArg: ISmartfileConstructorOptions);
/**
* return relative path of file
* ->
*/
readonly relative: string;
/** /**
* set contents from string * set contents from string
* @param contentString * @param contentString
@ -53,4 +44,27 @@ export declare class Smartfile {
* read file from disk * read file from disk
*/ */
read(): Promise<void>; read(): Promise<void>;
/**
* vinyl-compatibility: alias of this.contentBuffer
*/
contents: Buffer;
/**
* vinyl-compatibility
*/
readonly cwd: string;
/**
* return relative path of file
*/
readonly relative: string;
/**
* return truw when the file has content
*/
isNull(): boolean;
/**
* return true if contents are Buffer
*/
isBuffer(): boolean;
isDirectory(): boolean;
isStream(): boolean;
isSymbolic(): boolean;
} }

View File

@ -8,6 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
}); });
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const plugins = require("./smartfile.plugins");
/** /**
* class Smartfile * class Smartfile
* -> is vinyl file compatible * -> is vinyl file compatible
@ -20,24 +21,15 @@ class Smartfile {
constructor(optionsArg) { constructor(optionsArg) {
if (optionsArg.contentBuffer) { if (optionsArg.contentBuffer) {
this.contentBuffer = optionsArg.contentBuffer; this.contentBuffer = optionsArg.contentBuffer;
this.contents = optionsArg.contentBuffer;
} }
else if (optionsArg.contentString) { else if (optionsArg.contentString) {
this.contentBuffer = optionsArg.contentBuffer; this.setContentsFromString(optionsArg.contentString);
this.contents = Buffer.from(optionsArg.contentString);
} }
else { else {
console.log('created empty Smartfile?'); console.log('created empty Smartfile?');
} }
this.path = optionsArg.path; this.path = optionsArg.path;
this.cwd = optionsArg.cwd; this.base = optionsArg.base;
}
/**
* return relative path of file
* ->
*/
get relative() {
return '';
} }
/** /**
* set contents from string * set contents from string
@ -60,6 +52,57 @@ class Smartfile {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
}); });
} }
// -----------------------------------------------
// vinyl compatibility
// -----------------------------------------------
/**
* vinyl-compatibility: alias of this.contentBuffer
*/
get contents() {
return this.contentBuffer;
}
set contents(contentsArg) {
this.contentBuffer = contentsArg;
}
/**
* vinyl-compatibility
*/
get cwd() {
return process.cwd();
}
/**
* return relative path of file
*/
get relative() {
return plugins.path.relative(this.base, this.path);
}
/**
* return truw when the file has content
*/
isNull() {
if (!this.contentBuffer) {
return true;
}
return false;
}
/**
* return true if contents are Buffer
*/
isBuffer() {
if (this.contents instanceof Buffer) {
return true;
}
return false;
}
isDirectory() {
return false;
}
isStream() {
return false;
}
isSymbolic() {
return false;
}
} }
exports.Smartfile = Smartfile; exports.Smartfile = Smartfile;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxlLmNsYXNzZXMuc21hcnRmaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRmaWxlLmNsYXNzZXMuc21hcnRmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFTQTs7O0dBR0c7QUFDSDtJQTBCRTs7O09BR0c7SUFDSCxZQUFhLFVBQXdDO1FBQ25ELEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQTtZQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUE7UUFDMUMsQ0FBQztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUE7WUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUN2RCxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFDekMsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQTtRQUMzQixJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUE7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksUUFBUTtRQUNWLE1BQU0sQ0FBQyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBR0Q7OztPQUdHO0lBQ0gscUJBQXFCLENBQUMsYUFBcUI7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDRyxLQUFLOztRQUVYLENBQUM7S0FBQTtJQUVEOztPQUVHO0lBQ0csSUFBSTs7UUFDVixDQUFDO0tBQUE7Q0FDRjtBQXpFRCw4QkF5RUMifQ== //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxlLmNsYXNzZXMuc21hcnRmaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRmaWxlLmNsYXNzZXMuc21hcnRmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSwrQ0FBOEM7QUFTOUM7OztHQUdHO0FBQ0g7SUFxQkU7OztPQUdHO0lBQ0gsWUFBYSxVQUF3QztRQUNuRCxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUE7UUFDL0MsQ0FBQztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQ3RELENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtRQUN6QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFBO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQTtJQUM3QixDQUFDO0lBR0Q7OztPQUdHO0lBQ0gscUJBQXFCLENBQUMsYUFBcUI7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDRyxLQUFLOztRQUVYLENBQUM7S0FBQTtJQUVEOztPQUVHO0lBQ0csSUFBSTs7UUFDVixDQUFDO0tBQUE7SUFFRCxrREFBa0Q7SUFDbEQsc0JBQXNCO0lBQ3RCLGtEQUFrRDtJQUNsRDs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFBO0lBQzNCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBRSxXQUFXO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksR0FBRztRQUNMLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUE7UUFDYixDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQTtRQUNiLENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLENBQUMsS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLENBQUMsS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLENBQUMsS0FBSyxDQUFBO0lBQ2QsQ0FBQztDQUNGO0FBckhELDhCQXFIQyJ9

16
dist/smartfile.fs.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{ {
"name": "smartfile", "name": "smartfile",
"version": "4.2.3", "version": "4.2.10",
"description": "offers smart ways to work with files in nodejs", "description": "offers smart ways to work with files in nodejs",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts", "typings": "dist/index.d.ts",
@ -40,7 +40,7 @@
"vinyl-file": "^3.0.0" "vinyl-file": "^3.0.0"
}, },
"devDependencies": { "devDependencies": {
"gulp-function": "^2.2.3", "gulp-function": "^2.2.9",
"tapbundle": "^1.0.10" "tapbundle": "^1.0.10"
} }
} }

View File

@ -51,9 +51,10 @@ tap.test('.fs.listFileTree() -> should get a file tree', async () => {
expect(folderArrayArg).to.not.deep.include('mytest.json') expect(folderArrayArg).to.not.deep.include('mytest.json')
}) })
tap.test('.fstoObjectFromFileTree -> should read a file tree into an Object', async () => { tap.test('.fs.fileTreeToObject -> should read a file tree into an Object', async () => {
let fileArrayArg = await smartfile.fs.fileTreeToObject(path.resolve('./test/'), '**/*.txt') let fileArrayArg = await smartfile.fs.fileTreeToObject(path.resolve('./test/'), '**/*.txt')
// expect(fileArrayArg[1]).to.be.instanceof(smartfile.Smartfile) expect(fileArrayArg[0]).to.be.instanceof(smartfile.Smartfile)
expect(fileArrayArg[0].contents.toString()).to.equal(fileArrayArg[0].contentBuffer.toString())
}) })
tap.test('.fs.copy() -> should copy a directory', async () => { tap.test('.fs.copy() -> should copy a directory', async () => {
@ -72,36 +73,28 @@ tap.test('.fs.remove() -> should remove an entire directory', async () => {
}) })
tap.test('smartfile.fs.remove -> should remove single files', async () => { tap.test('.fs.remove -> should remove single files', async () => {
await expect(smartfile.fs.remove('./test/temp/mytestRenamed.yaml')).to.eventually.be.fulfilled await expect(smartfile.fs.remove('./test/temp/mytestRenamed.yaml')).to.eventually.be.fulfilled
}) })
tap.test('smartfile.fs.removeSync -> should remove single files synchronouly', async () => { tap.test('.fs.removeSync -> should remove single files synchronouly', async () => {
smartfile.fs.removeSync('./test/temp/testfile1.txt') smartfile.fs.removeSync('./test/temp/testfile1.txt')
expect(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).to.be.false expect(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).to.be.false
}) })
tap.test('smartfile.fs.removeMany -> should remove and array of files', async () => { tap.test('.fs.removeMany -> should remove and array of files', async () => {
smartfile.fs.removeMany([ './test/temp/testfile1.txt', './test/temp/testfile2.txt' ]).then(() => { smartfile.fs.removeMany([ './test/temp/testfile1.txt', './test/temp/testfile2.txt' ]).then(() => {
expect(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).to.be.false expect(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).to.be.false
expect(smartfile.fs.fileExistsSync('./test/temp/testfile2.txt')).to.be.false expect(smartfile.fs.fileExistsSync('./test/temp/testfile2.txt')).to.be.false
}) })
}) })
tap.test('smartfile.fs.removeManySync -> should remove and array of single files synchronouly', async () => { tap.test('.fs.removeManySync -> should remove and array of single files synchronouly', async () => {
smartfile.fs.removeManySync([ './test/temp/testfile1.txt', './test/temp/testfile2.txt' ]) smartfile.fs.removeManySync([ './test/temp/testfile1.txt', './test/temp/testfile2.txt' ])
expect(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).to.be.false expect(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).to.be.false
expect(smartfile.fs.fileExistsSync('./test/temp/testfile2.txt')).to.be.false expect(smartfile.fs.fileExistsSync('./test/temp/testfile2.txt')).to.be.false
}) })
// ---------------------------
// smartfile.interpreter
// ---------------------------
tap.test('.interpreter.filetype() -> should get the file type from a string', async () => {
expect(smartfile.interpreter.filetype('./somefolder/data.json')).equal('json')
})
tap.test('.fs.toObjectSync() -> should read an ' + '.yaml' + ' file to an object', async () => { tap.test('.fs.toObjectSync() -> should read an ' + '.yaml' + ' file to an object', async () => {
let testData = smartfile.fs.toObjectSync('./test/mytest.yaml') let testData = smartfile.fs.toObjectSync('./test/mytest.yaml')
expect(testData).have.property('key1', 'this works') expect(testData).have.property('key1', 'this works')
@ -129,6 +122,18 @@ tap.test('.fs.toVinylSync -> should read an ' + '.json OR .yaml' + ' file to an
expect(vinyl.isVinyl(testData)).to.be.true expect(vinyl.isVinyl(testData)).to.be.true
}) })
// ---------------------------
// smartfile.interpreter
// ---------------------------
tap.test('.interpreter.filetype() -> should get the file type from a string', async () => {
expect(smartfile.interpreter.filetype('./somefolder/data.json')).equal('json')
})
// ---------------------------
// smartfile.memory
// ---------------------------
tap.test('.memory.toVinylFileSync() -> should produce a vinylFile', async () => { tap.test('.memory.toVinylFileSync() -> should produce a vinylFile', async () => {
let localString = 'myString' let localString = 'myString'
let localOptions = { filename: 'vinylfile2', base: '/someDir' } let localOptions = { filename: 'vinylfile2', base: '/someDir' }
@ -183,4 +188,18 @@ tap.test('.remote.toString() -> should reject a Promise when the link is false',
.to.eventually.be.rejected .to.eventually.be.rejected
}) })
// ---------------------------
// smartfile.Smartfile
// ---------------------------
tap.test('.Smartfile -> should produce vinyl compatible files', async () => {
let smartfileArray = await smartfile.fs.fileTreeToObject(process.cwd(), './test/testfolder/**/*')
let localSmartfile = smartfileArray[0]
expect(localSmartfile).to.be.instanceof(smartfile.Smartfile)
expect(localSmartfile.contents).to.be.instanceof(Buffer)
expect(localSmartfile.isBuffer()).to.be.true
expect(localSmartfile.isDirectory()).to.be.false
expect(localSmartfile.isNull()).to.be.false
})
tap.start() tap.start()

View File

@ -4,7 +4,7 @@ export interface ISmartfileConstructorOptions {
path?: string path?: string
contentString?: string contentString?: string
contentBuffer?: Buffer contentBuffer?: Buffer
cwd?: string base?: string
} }
/** /**
@ -17,11 +17,6 @@ export class Smartfile {
*/ */
path: string path: string
/**
* gulp-compatibility: alias of this.contentBuffer
*/
contents: Buffer
/** /**
* the content of the file as Buffer * the content of the file as Buffer
*/ */
@ -30,7 +25,7 @@ export class Smartfile {
/** /**
* The current working directory of the file * The current working directory of the file
*/ */
cwd: string base: string
/** /**
* sync the file with disk * sync the file with disk
@ -44,23 +39,13 @@ export class Smartfile {
constructor (optionsArg: ISmartfileConstructorOptions) { constructor (optionsArg: ISmartfileConstructorOptions) {
if (optionsArg.contentBuffer) { if (optionsArg.contentBuffer) {
this.contentBuffer = optionsArg.contentBuffer this.contentBuffer = optionsArg.contentBuffer
this.contents = optionsArg.contentBuffer
} else if (optionsArg.contentString) { } else if (optionsArg.contentString) {
this.contentBuffer = optionsArg.contentBuffer this.setContentsFromString(optionsArg.contentString)
this.contents = Buffer.from(optionsArg.contentString)
} else { } else {
console.log('created empty Smartfile?') console.log('created empty Smartfile?')
} }
this.path = optionsArg.path this.path = optionsArg.path
this.cwd = optionsArg.cwd this.base = optionsArg.base
}
/**
* return relative path of file
* ->
*/
get relative () {
return ''
} }
@ -84,4 +69,63 @@ export class Smartfile {
*/ */
async read () { async read () {
} }
// -----------------------------------------------
// vinyl compatibility
// -----------------------------------------------
/**
* vinyl-compatibility: alias of this.contentBuffer
*/
get contents (): Buffer {
return this.contentBuffer
}
set contents (contentsArg) {
this.contentBuffer = contentsArg
}
/**
* vinyl-compatibility
*/
get cwd () {
return process.cwd()
}
/**
* return relative path of file
*/
get relative (): string {
return plugins.path.relative(this.base, this.path)
}
/**
* return truw when the file has content
*/
isNull (): boolean {
if (!this.contentBuffer) {
return true
}
return false
}
/**
* return true if contents are Buffer
*/
isBuffer (): boolean {
if (this.contents instanceof Buffer) {
return true
}
return false
}
isDirectory () {
return false
}
isStream () {
return false
}
isSymbolic () {
return false
}
} }

View File

@ -43,7 +43,11 @@ export let fileExists = function (filePath) {
* Checks if given path points to an existing directory * Checks if given path points to an existing directory
*/ */
export let isDirectory = function (pathArg): boolean { export let isDirectory = function (pathArg): boolean {
return plugins.fsExtra.statSync(pathArg).isDirectory() try {
return plugins.fsExtra.statSync(pathArg).isDirectory()
} catch (err) {
return false
}
} }
/** /**
@ -203,8 +207,8 @@ export let toObjectSync = function (filePathArg, fileTypeArg?) {
* @param filePath * @param filePath
* @returns {string|Buffer|any} * @returns {string|Buffer|any}
*/ */
export let toStringSync = function (filePath: string) { export let toStringSync = function (filePath: string): string {
let fileString = plugins.fsExtra.readFileSync(filePath, 'utf8') let fileString: any = plugins.fsExtra.readFileSync(filePath, 'utf8')
return fileString return fileString
} }
@ -220,11 +224,15 @@ export let fileTreeToObject = async (dirPathArg: string, miniMatchFilter: string
let fileTree = await listFileTree(dirPath, miniMatchFilter) let fileTree = await listFileTree(dirPath, miniMatchFilter)
let smartfileArray: Smartfile[] = [] let smartfileArray: Smartfile[] = []
for (let filePath of fileTree) { for (let filePath of fileTree) {
let fileContentString = toStringSync(
plugins.path.join(dirPath, filePath)
)
// push a read file as Smartfile
smartfileArray.push(new Smartfile({ smartfileArray.push(new Smartfile({
path: filePath, contentBuffer: new Buffer(fileContentString),
contentBuffer: new Buffer(toStringSync( base: dirPath,
plugins.path.join(dirPath, filePath) path: filePath
))
})) }))
} }
return smartfileArray return smartfileArray

View File

@ -186,9 +186,9 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6:
version "4.1.11" version "4.1.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
gulp-function@^2.2.3: gulp-function@^2.2.9:
version "2.2.6" version "2.2.9"
resolved "https://registry.yarnpkg.com/gulp-function/-/gulp-function-2.2.6.tgz#e14c1eefdab4d4ac11d9f4abfdbe94115a12d10d" resolved "https://registry.yarnpkg.com/gulp-function/-/gulp-function-2.2.9.tgz#de513103db9d817e94bb8aab45f30bf286f19ae5"
dependencies: dependencies:
"@types/through2" "^2.0.32" "@types/through2" "^2.0.32"
smartq "^1.1.1" smartq "^1.1.1"