Custom eslint rule for disallowing cross-package references
Summary: Added infra for writing and using custom eslint rules and created a rule for disallowing cross-package file imports. Such imports are anti-pattern and they also break standalone plugin bundling. We still have a bunch of places where Flipper core references code directly from plugins. I've ignored these places for now and added task T71355623 to revisit them. Reviewed By: passy Differential Revision: D22998955 fbshipit-source-id: d04cff8fc115ba1300a7e6830306ec134046e927
This commit is contained in:
committed by
Facebook GitHub Bot
parent
6989fa608d
commit
4a1c2a9ece
@@ -0,0 +1,56 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {TSESLint} from '@typescript-eslint/experimental-utils';
|
||||
import rule, {RULE_NAME} from '../noRelativeImportsAcrossPackages';
|
||||
|
||||
const tester = new TSESLint.RuleTester({
|
||||
parser: require.resolve('@typescript-eslint/parser'),
|
||||
parserOptions: {
|
||||
sourceType: 'module',
|
||||
ecmaVersion: 2020,
|
||||
},
|
||||
});
|
||||
|
||||
tester.run(RULE_NAME, rule, {
|
||||
valid: [
|
||||
{
|
||||
code: `import * as testUtils from 'flipper-test-utils';`,
|
||||
filename: __filename,
|
||||
},
|
||||
{
|
||||
code: `const testUtils = require('flipper-test-utils');`,
|
||||
filename: __filename,
|
||||
},
|
||||
{
|
||||
code: `import rule, {RULE_NAME} from '../noRelativeImportsAcrossPackages';`,
|
||||
filename: __filename,
|
||||
},
|
||||
{
|
||||
code: `require('../noRelativeImportsAcrossPackages');`,
|
||||
filename: __filename,
|
||||
},
|
||||
{
|
||||
code: `import m from './subdir/module';`,
|
||||
filename: __filename,
|
||||
},
|
||||
],
|
||||
invalid: [
|
||||
{
|
||||
code: `import * as pathUtils from '../../../../test-utils/src/pathUtils';`,
|
||||
filename: __filename,
|
||||
errors: [{messageId: 'noRelativeImportsAcrossPackages'}],
|
||||
},
|
||||
{
|
||||
code: `require('../../../../test-utils/src/pathUtils');`,
|
||||
filename: __filename,
|
||||
errors: [{messageId: 'noRelativeImportsAcrossPackages'}],
|
||||
},
|
||||
],
|
||||
});
|
||||
Reference in New Issue
Block a user