我必须从CircleCI 1.0迁移到2.0。在将旧配置更改为新配置后,构建失败,因为eslint-plugin-prettier报告了更漂亮的间距冲突。
MyProject-是我的GitHub存储库,它包含一个文件夹client
,其中包含我要在CI上构建的所有前端代码。在client
文件夹中
.eslintrc.json
...
"extends": ["airbnb", "prettier"],
"plugins": ["prettier"],
...
.prettierrc
{
"tabWidth": 4,
"trailingComma": "all",
"singleQuote": true
}
.gitattributes (我在Windows 10上工作),其代码如下:
*.js text eol=crlf
*.jsx text eol=crlf
当然还有package.json
新的CircleCI配置:
version: 2
jobs:
build:
working_directory: ~/MyProject
docker:
- image: circleci/node:6.14.3-jessie-browsers
steps:
- checkout
- run:
name: Install Packages
command: npm install
working_directory: client
- run:
name: Test
command: npm run validate
working_directory: client
旧的CircleCI配置:
## Customize dependencies
machine:
node:
version: 6.1.0
# Remove cache before new build. It takes much time
# but fixing a build which is broken long time ago (and not detected because of cache)
# is even more time consuming
dependencies:
post:
- rm -r ~/.npm
## Customize test commands
test:
override:
- npm run validate
general:
build_dir: client
由于掉毛问题(所有都是关于空格的数量),构建失败:
那么,什么原因会导致这些错误?我在这里没主意。我首先以为可能是因为未找到.prettierrc。但是,当我删除它进行实验并在本地运行时,所有文件中的错误总计超过1000。在使用.prettierrc的CI上,很少文件中只有188。
答案 0 :(得分:0)
我终于想通了。
我的package.json
文件包含对Prettier的以下依赖关系:
"prettier": "^1.11.1"
。
我不得不努力学习这个小符号^
的含义。它允许安装与1.11.1
兼容的任何版本的Prettier。就CircleCI 2.0而言,它安装了1.14.2
,这为Prettier添加了新功能。
我相信它不会在CircleCI 1.0和本地版本上中断,因为缓存的node_modules包含与1.11.1
兼容的更漂亮的Prettier版本
关于语义版本,这里video很不错。