如何告诉更漂亮的递归解析文件?

时间:2017-05-03 15:24:30

标签: javascript prettier

我想请prettier递归地解析我的JavaScript文件,而不是指定应该检查文件的每个文件夹。

我想做类似的事情:

prettier --write "all_js_files_except_node_modules_folder"

我在他们的文档中找不到多少内容。有什么建议吗?

谢谢, 保罗

6 个答案:

答案 0 :(得分:20)

几个星期前的

This issue似乎回答了你的问题。 TL; DR:

prettier "{,!(node_modules)/**/}*.js"

答案 1 :(得分:5)

如果你像我一样,你没有意识到目标文件使用的是globs格式。

您可以阅读更多相关信息here。 (查看有关特殊字符的说明)。如果您想了解更多信息,请点击此处:http://tldp.org/LDP/abs/html/globbingref.html

我的文件夹结构:

components/
pages/
node_modules/
package.json    
server.js

我想忽略package.jsonnode_modules/。我用这个命令解决了我的需求:

prettier --write "{*.js,!(node*)**/*.js}"`

{}是一种扩展机制,允许我使用多个过滤条件。在我的情况下有2:

1:*.js:定位执行命令的根目录中的所有JS文件

2:!(node*)**/*.js:定位所有文件夹和子文件夹中的所有JS文件(使用**获取递归部分)

答案 2 :(得分:5)

只需运行 prettier --write .

并使用 .prettierignore 文件告诉它要忽略什么,但默认情况下它会忽略 node_modules

答案 3 :(得分:1)

此解决方案最适合我。这是我发现的唯一会打入每个文件的方法,无论其嵌套程度如何:

package.json

  "scripts": {
    "format": "prettier --write {,*/**/}*.{js,jsx,json}",
  },

.prettierignore

node_modules
build

答案 4 :(得分:0)

对于需要简单示例(没有括号,or等)的剪切和粘贴程序,这可能是一个有用的glob示例:

prettier --write "app/**/*.ts"

保护*.ts目录及以下目录中的每个app文件。

答案 5 :(得分:0)

添加为 npm 脚本对我有用:

  • package.json 定义的 npm 脚本

它将递归修复以下文件。ext 使用 prettierrc 文件中定义的以下规则集。

重要:.<扩展名 || MULTIPLE_EXTENSIONS> 例如'./src//**/.{js,jsx,scss,md,json}'

不要错过引号 -> ' PATH>. '

{
    "name": "compentence-journey",
    "version": "0.1.0",
    "private": true,
    "scripts": {
    "prettier.fix": "prettier --check --write './src/*/**/*.{js,jsx,scss,md,json}'",
    },
   ...

}
  • .prettierrc JSON 文件
{
  "trailingComma": "es5",
  "tabWidth": 4,
  "semi": false,
  "singleQuote": true
}
  • .prettierignore 从格式中忽略文件夹/文件
/config

# Dependency directories
node_modules/

# Publish Directory
build/

# Root level folders/files
/package.json