diff --git a/packages/yaml/README.md b/packages/yaml/README.md index 7a41ae8ea..c436bdb87 100644 --- a/packages/yaml/README.md +++ b/packages/yaml/README.md @@ -90,8 +90,8 @@ A function which can optionally mutate parsed YAML. The function should return t ```js yaml({ - transform(data) { - if (Array.isArray(data)) { + transform(data, filePath) { + if (Array.isArray(data) && filePath === './my-file.yml') { return data.filter(character => !character.batman); } } diff --git a/packages/yaml/src/index.js b/packages/yaml/src/index.js index d1d5f2e56..7bbe08976 100755 --- a/packages/yaml/src/index.js +++ b/packages/yaml/src/index.js @@ -9,7 +9,7 @@ const defaults = { }; const ext = /\.ya?ml$/; -export default function yamll(opts = {}) { +export default function yaml(opts = {}) { const options = Object.assign({}, defaults, opts); const { documentMode, safe } = options; const filter = createFilter(options.include, options.exclude); @@ -35,7 +35,7 @@ export default function yamll(opts = {}) { let data = loadMethod(content); if (typeof options.transform === 'function') { - const result = options.transform(data); + const result = options.transform(data, id); // eslint-disable-next-line no-undefined if (result !== undefined) { data = result; diff --git a/packages/yaml/test/test.js b/packages/yaml/test/test.js index 3f4ce26bc..d8d5b937f 100755 --- a/packages/yaml/test/test.js +++ b/packages/yaml/test/test.js @@ -59,8 +59,11 @@ test('resolves extensionless imports in conjunction with nodeResolve plugin', as }); test('applies the optional transform method to parsed YAML', async (t) => { - const transform = (data) => { + const transform = (data, filePath) => { + // check that transformer is passed a correct file path + t.true(typeof filePath === 'string' && filePath.endsWith('.yaml'), filePath); if (Array.isArray(data)) { + t.true(filePath.endsWith('array.yaml'), filePath); return data.filter((datum) => !datum.private); } Object.keys(data).forEach((key) => {