feat: add ignore option (fix #31) (#37)

- Add functionality to ignore files based on provided
regular expressions
- Support writeIndex and writeIndexCli
- in index.js config must be specified as below

    // @create-index {"ignore":["/foo.js"]}
This commit is contained in:
Dawid Karabin
2017-03-13 20:42:46 +00:00
committed by Gajus Kuizinas
parent 5fea5e63d7
commit bf45925380
20 changed files with 257 additions and 39 deletions
+33 -11
View File
@@ -8,29 +8,51 @@ import {
import writeIndex from '../src/utilities/writeIndex';
import codeExample from './codeExample';
const readFile = (filePath) => {
return fs.readFileSync(filePath, 'utf8');
};
const removeFile = (filePath) => {
fs.unlinkSync(filePath);
};
const appendToFile = (filePath, content) => {
fs.appendFileSync(filePath, content, 'utf-8');
};
const fixturesPath = path.resolve(__dirname, 'fixtures/write-index');
describe('writeIndex()', () => {
it('creates index in target directory', () => {
const indexFilePath = path.resolve(fixturesPath, 'mixed/index.js');
try {
fs.unlinkSync(indexFilePath);
// eslint-disable-next-line no-empty
} catch (error) {
}
removeFile(indexFilePath);
writeIndex([path.resolve(fixturesPath, 'mixed')]);
const indexCode = fs.readFileSync(indexFilePath, 'utf8');
const indexCode = readFile(indexFilePath);
expect(indexCode).to.equal(codeExample(`
// @create-index
export { default as bar } from './bar';
export { default as foo } from './foo.js';
`));
`));
});
it('creates index with config in target directory', () => {
const indexFilePath = path.resolve(fixturesPath, 'with-config/index.js');
// eslint-disable-next-line
const ignoredExportLine = `export { default as bar } from './bar.js';`;
appendToFile(indexFilePath, ignoredExportLine);
expect(readFile(indexFilePath).includes(ignoredExportLine)).to.equal(true);
writeIndex([path.resolve(fixturesPath, 'with-config')]);
const indexCode = readFile(indexFilePath);
expect(indexCode).to.equal(codeExample(`
// @create-index {"ignore":["/bar.js$/"]}
export { default as foo } from './foo.js';
`));
});
});