Meteor.js CircleCI 集成在 linting 上失败
Meteor.js CircleCI integration fails on linting
我正在尝试让 CircleCI 进行 运行 测试失败的 linting,但是它在某些特定于 Meteor 工作方式的地方失败了,在服务器和客户端上 运行ning .一些代码在服务器或客户端上应该只 运行。当您尝试在任何其他块内进行导入时,Lint 失败:
...
import { Meteor } from 'meteor/meteor';
import { _ } from 'meteor/underscore';
import { DDP } from 'meteor/ddp-client';
if (Meteor.isServer) {
import './server/publications.coffee';
...
出现以下错误:
/home/ubuntu/todos/imports/api/lists/lists.tests.js
16:3 error Parsing error: 'import' and 'export' may only appear at the top level
显然这不符合 Meteor 的做法,因为它在 meteor/todo 应用程序中,并且工作正常。
如何绕过 CircleCI linting 检查,或将其更改为警告项?
Eslint 解析器不接受 Meteor 嵌套导入语法,因为 ES6 规范也不允许。请参阅详细信息 here. There are two options get around this: either switch to the babel-eslint 解析器,它支持带有 allowImportExportEverywhere
选项的语法。您需要像这样修改 package.json:
"devDependencies": {
...
"babel-eslint": "^5.0.4"
},
"eslintConfig": {
"parser": "babel-eslint",
"parserOptions": {
"sourceType": "module",
"allowImportExportEverywhere": false
},
}
...
或者您可以简单地使用 require
以老式的方式有条件地包含文件:
if (Meteor.isServer) {
require('./server/publications.coffee'); // eslint-disable-line global-require
}
这些选项中的任何一个都应该使 lint 通过 CircleCI。如果你打算在 CircleCI 中使用它,我也推荐 setting up linting in your editor。
我正在尝试让 CircleCI 进行 运行 测试失败的 linting,但是它在某些特定于 Meteor 工作方式的地方失败了,在服务器和客户端上 运行ning .一些代码在服务器或客户端上应该只 运行。当您尝试在任何其他块内进行导入时,Lint 失败:
...
import { Meteor } from 'meteor/meteor';
import { _ } from 'meteor/underscore';
import { DDP } from 'meteor/ddp-client';
if (Meteor.isServer) {
import './server/publications.coffee';
...
出现以下错误:
/home/ubuntu/todos/imports/api/lists/lists.tests.js
16:3 error Parsing error: 'import' and 'export' may only appear at the top level
显然这不符合 Meteor 的做法,因为它在 meteor/todo 应用程序中,并且工作正常。
如何绕过 CircleCI linting 检查,或将其更改为警告项?
Eslint 解析器不接受 Meteor 嵌套导入语法,因为 ES6 规范也不允许。请参阅详细信息 here. There are two options get around this: either switch to the babel-eslint 解析器,它支持带有 allowImportExportEverywhere
选项的语法。您需要像这样修改 package.json:
"devDependencies": {
...
"babel-eslint": "^5.0.4"
},
"eslintConfig": {
"parser": "babel-eslint",
"parserOptions": {
"sourceType": "module",
"allowImportExportEverywhere": false
},
}
...
或者您可以简单地使用 require
以老式的方式有条件地包含文件:
if (Meteor.isServer) {
require('./server/publications.coffee'); // eslint-disable-line global-require
}
这些选项中的任何一个都应该使 lint 通过 CircleCI。如果你打算在 CircleCI 中使用它,我也推荐 setting up linting in your editor。