mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-10 09:31:57 -05:00
Disallow dynamic require/import in extensions
Follow up on https://github.com/microsoft/vscode/pull/296220 Let's make sure more code doesn't introduce this pattern without some thought
This commit is contained in:
@@ -2112,6 +2112,30 @@ export default tseslint.config(
|
||||
'comma-dangle': ['warn', 'only-multiline']
|
||||
}
|
||||
},
|
||||
// Extension main sources (excluding tests)
|
||||
{
|
||||
files: [
|
||||
'extensions/**/*.ts',
|
||||
|
||||
],
|
||||
ignores: [
|
||||
'extensions/**/*.test.ts',
|
||||
],
|
||||
rules: {
|
||||
// Ban dynamic require() and import() calls in extensions to ensure tree-shaking works
|
||||
'no-restricted-syntax': [
|
||||
'warn',
|
||||
{
|
||||
'selector': `CallExpression[callee.name='require'][arguments.0.type!='Literal']`,
|
||||
'message': 'Use static imports instead of dynamic require() calls to enable tree-shaking.'
|
||||
},
|
||||
{
|
||||
'selector': `ImportExpression[source.type!='Literal']`,
|
||||
'message': 'Use static imports instead of dynamic import() calls to enable tree-shaking.'
|
||||
},
|
||||
],
|
||||
}
|
||||
},
|
||||
// markdown-language-features
|
||||
{
|
||||
files: [
|
||||
|
||||
@@ -104,6 +104,8 @@ function createServerHost(
|
||||
|
||||
const scriptPath = combinePaths(packageRoot, browser);
|
||||
try {
|
||||
// This file isn't bundled so we really do want a dynamic import here
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
const { default: module } = await import(/* webpackIgnore: true */ scriptPath);
|
||||
return { module, error: undefined };
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user