跳到主要內容

Node.js API

Stylelint 模組包含一個提供 Node.js API 的 lint() 函式。

const result = await stylelint.lint(options);

選項

除了 標準選項 之外,Node API 接受

config

一個 設定物件

如果您使用此選項,Stylelint 就不會費心尋找設定檔 (例如 stylelint.config.js)。

code

要檢查的字串。

cwd

Stylelint 將從中尋找檔案的目錄。預設為 process.cwd() 回傳的目前工作目錄。

files

檔案 glob 或 檔案 glob 陣列。

相對 glob 視為相對於 globbyOptions.cwd

儘管 filescode 都是「選填」,但必須有其中一個,且不能同時有兩個。

globbyOptions

files 一起傳遞的選項。

例如,您可以在 glob 路徑時設定特定的 cwd 來使用。files 中的相對 glob 視為相對於此路徑。預設情況下,globbyOptions.cwd 會由 cwd 設定。

如需更詳細的用法,請參閱 Globby 指南

傳回的 Promise

stylelint.lint() 傳回一個 Promise,其解析為包含下列屬性的物件

code

包含自動修正程式碼的字串,如果 fix 選項設為 true 且提供了 code 選項。否則,為 undefined

cwd

用作 linting 作業工作目錄的目錄。

errored

布林值。如果為 true,表示至少有一個「錯誤」層級嚴重性的規則註冊了一個問題。

output

警告

此屬性已棄用,並將在下一主要版本中移除。請改用 reportcode。請參閱 遷移指南

包含下列任一項目的字串

  • 格式化問題(使用預設格式化程式或你傳遞的任何格式化程式)
  • 或自動修正的程式碼,如果 fix 選項設定為 true

postcssResults

包含所有累積的 PostCSS LazyResults 的陣列。

report

包含格式化問題的字串(使用預設格式化程式或你傳遞的任何格式化程式)。

results

包含所有 Stylelint 結果物件的陣列(格式化程式使用的物件)。

maxWarningsExceeded

包含警告最大數量和已找到數量的物件,例如 { maxWarnings: 0, foundWarnings: 12 }

語法錯誤

當你的 CSS 包含語法錯誤時,stylelint.lint() 不會拒絕 Promise。它會解析包含語法錯誤資訊的物件(請參閱 已回傳的 Promise)。

使用範例

範例 A

由於 config 不包含 extendsplugins 的相對路徑,因此你不需要使用 configBasedir

try {
const result = await stylelint.lint({
config: { rules: "color-no-invalid-hex" },
files: "all/my/stylesheets/*.css"
});
// do things with result.report, result.errored, and result.results
} catch (err) {
// do things with err e.g.
console.error(err.stack);
}

範例 B

如果 myConfig 確實包含 extendsplugins 的相對路徑,你必須使用 configBasedir

const result = await stylelint.lint({
config: myConfig,
configBasedir: url.fileURLToPath(new URL("configs", import.meta.url)),
files: "all/my/stylesheets/*.css"
});

範例 C

使用字串程式碼取代檔案 glob,並使用詳細格式化程式取代預設 JSON

const result = await stylelint.lint({
code: "a { color: pink; }",
config: myConfig,
formatter: "verbose"
});

// do things with result.report

報告將會作為已回傳物件中 report 屬性的值提供。

範例 D

使用你自己的自訂格式化程式函式

const result = await stylelint.lint({
config: myConfig,
files: "all/my/stylesheets/*.css",
formatter: (results) => {
/* .. */
}
});

範例 E

使用自訂語法

const result = await stylelint.lint({
config: myConfig,
files: "all/my/stylesheets/*.css",
customSyntax: {
parse(css, opts) {
/* .. */
},
stringify(node, builder) {
/* .. */
}
}
});
備註

customSyntax 選項也接受字串。 參閱選項文件以取得詳細資訊

範例 F

使用字串程式碼和 fix 選項

const result = await stylelint.lint({
code: "a { color: pink; }",
config: { rules: { "hue-degree-notation": "angle" } },
fix: true
});

// do things with result.code

自動修正的程式碼將可用作傳回物件中 code 屬性的值。

解析檔案的有效設定

如果您想找出實際上會用於檔案的設定為何,而不實際執行 linting,您可以使用 resolveConfig() 函式。給定檔案路徑,它將傳回一個 Promise,並以有效的設定物件解析。

const config = await stylelint.resolveConfig(filePath);

// config => {
// rules: {
// 'color-no-invalid-hex': true
// },
// extends: [
// 'stylelint-config-standard',
// 'stylelint-config-css-modules'
// ],
// plugins: [
// 'stylelint-scss'
// ],
// …
// }

如果找不到檔案設定,resolveConfig() 將傳回一個 Promise,並解析為 undefined

您也可以傳遞下列 選項子集,您通常會傳遞給 lint()

  • cwd
  • config
  • configBasedir
  • customSyntax