Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"html-styles": "1.0.0",
"html-tag-names": "1.1.5",
"html-void-elements": "1.0.5",
"ignore": "4.0.6",
"ignore": "5.1.9",
"jest-docblock": "27.0.6",
"json5": "2.2.0",
"leven": "3.1.0",
Expand Down
10 changes: 7 additions & 3 deletions src/cli/format.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

const { promises: fs } = require("fs");
const path = require("path");

const { isPathValid } = require("ignore");
const chalk = require("chalk");

// eslint-disable-next-line no-restricted-modules
Expand Down Expand Up @@ -250,7 +250,7 @@ async function formatStdin(context) {

if (
relativeFilepath &&
ignorer.ignores(fixWindowsSlashes(relativeFilepath))
isIgnored(ignorer, fixWindowsSlashes(relativeFilepath))
) {
writeOutput(context, { formatted: input });
return;
Expand Down Expand Up @@ -294,7 +294,7 @@ async function formatFiles(context) {
? path.relative(path.dirname(context.argv["ignore-path"]), filename)
: filename;

const fileIgnored = ignorer.ignores(fixWindowsSlashes(ignoreFilename));
const fileIgnored = isIgnored(ignorer, fixWindowsSlashes(ignoreFilename));
if (
fileIgnored &&
(context.argv["debug-check"] ||
Expand Down Expand Up @@ -432,4 +432,8 @@ async function formatFiles(context) {
}
}

function isIgnored(ignorer, file) {
return isPathValid(file) && ignorer.ignores(file);
}

module.exports = { format, formatStdin, formatFiles };
7 changes: 6 additions & 1 deletion src/common/create-ignorer.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,12 @@ createIgnorer.sync = function (ignorePath, withNodeModules) {
* @param {boolean?} withNodeModules
*/
function _createIgnorer(ignoreContent, withNodeModules) {
const ignorer = ignore().add(ignoreContent || "");
const ignorer = ignore();

if (ignoreContent) {
ignorer.add(ignoreContent);
}

if (!withNodeModules) {
ignorer.add("node_modules");
}
Expand Down
12 changes: 8 additions & 4 deletions src/common/get-file-info.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use strict";

const path = require("path");
const ignore = require("ignore");
const options = require("../main/options.js");
const config = require("../config/resolve-config.js");
const createIgnorer = require("./create-ignorer.js");
Expand Down Expand Up @@ -85,7 +86,9 @@ function _getFileInfo({
const normalizedFilePath = normalizeFilePath(filePath, ignorePath);

const fileInfo = {
ignored: ignorer.ignores(normalizedFilePath),
ignored:
ignore.isPathValid(normalizedFilePath) &&
ignorer.ignores(normalizedFilePath),
inferredParser: null,
};

Expand Down Expand Up @@ -115,9 +118,10 @@ function _getFileInfo({
}

function normalizeFilePath(filePath, ignorePath) {
return ignorePath
? path.relative(path.dirname(ignorePath), filePath)
: filePath;
return path.relative(
ignorePath ? path.dirname(ignorePath) : process.cwd(),
filePath
);
}

module.exports = getFileInfo;
12 changes: 11 additions & 1 deletion tests/integration/__tests__/__snapshots__/file-info.js.snap
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`Should not ignore files in parent dir (stderr) 1`] = `""`;

exports[`Should not ignore files in parent dir (stdout) 1`] = `
"{ \\"ignored\\": true, \\"inferredParser\\": null }

"
`;

exports[`Should not ignore files in parent dir (write) 1`] = `Array []`;

exports[`extracts file-info for a file in not_node_modules (stderr) 1`] = `""`;

exports[`extracts file-info for a file in not_node_modules (stdout) 1`] = `
Expand Down Expand Up @@ -63,7 +73,7 @@ exports[`extracts file-info with ignored=true for a file in .prettierignore (wri
exports[`extracts file-info with ignored=true for a file in a hand-picked .prettierignore (stderr) 1`] = `""`;

exports[`extracts file-info with ignored=true for a file in a hand-picked .prettierignore (stdout) 1`] = `
"{ \\"ignored\\": true, \\"inferredParser\\": null }
"{ \\"ignored\\": false, \\"inferredParser\\": \\"babel\\" }

"
`;
Expand Down
10 changes: 10 additions & 0 deletions tests/integration/__tests__/file-info.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,16 @@ describe("extracts file-info for a known markdown file with no extension", () =>
});

describe("extracts file-info with ignored=true for a file in .prettierignore", () => {
runPrettier("cli/ignore-path/", [
"--file-info",
"regular-module.js",
"--ignore-path=.prettierignore",
]).test({
status: 0,
});
});

describe("Should not ignore files in parent dir", () => {
runPrettier("cli/ignore-path/", ["--file-info", "regular-module.js"]).test({
status: 0,
});
Expand Down
17 changes: 16 additions & 1 deletion tests/integration/__tests__/ignore-emoji.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
"use strict";

const path = require("path");
const prettier = require("prettier-local");
const runPrettier = require("../runPrettier.js");

expect.addSnapshotSerializer(require("../path-serializer.js"));
Expand All @@ -19,3 +20,17 @@ describe("stdin", () => {
status: 0,
});
});

test("API getFileInfo should ignore files contains emoji", async () => {
await expect(
prettier.getFileInfo(
path.join(__dirname, "../cli/ignore-emoji/ignored/我的样式.css"),
{
ignorePath: path.join(__dirname, "../cli/ignore-emoji/.prettierignore"),
}
)
).resolves.toMatchObject({
ignored: true,
inferredParser: null,
});
});
7 changes: 6 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3431,7 +3431,12 @@ iconv-lite@^0.6.3:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"

[email protected], ignore@^4.0.6:
[email protected]:
version "5.1.9"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb"
integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==

ignore@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
Expand Down