JavaScript
The JavaScript Analyzer analyzes your JavaScript, TypeScript, Angular, Meteor, Ember, and Vue files and raises issues if they don't follow the best practices and methods for building efficient JavaScript Applications.
.deepsource.toml
Configuration - This section covers configuration specific to the javascript
analyzer. Please make sure to read the general configuration guide first.
name
- Type: String
- Presence: mandatory
- Description: Shortcode of the analyzer.
- Example:
name = "javascript"
enabled
- Type: Boolean
- Presence: optional
- Description: Toggle whether this analyzer should be run.
- Example:
enabled = true
meta
- Type: Table
- Presence: optional
- Description: Any supported metadata to pass to the analyzer.
- Example:
[analyzers.meta]
plugins = ["react"]
environment = ["mongo", "jquery"]
module_system = "es-modules"
dialect = "flow"
skip_doc_coverage = ["class-expression", "method-definition"]
plugins
- Type: Array
- Presence: optional
- Description: The JavaScript Frameworks being used in the project. Currently, we support React,Vue, EmberJS, Meteor, Angular and AngularJS.
- Available Values:
react
,vue
,ember
,meteor
,angular
andangularjs
- Default Value: None
- Example:
plugins = ["react"]
If you use frameworks like React with ES6 modules, we recommend you set module_system
to "es-modules"
.
dependency_file_paths
- Type: Array
- Presence: optional
- Description: A list of paths having files (e.g.
package.json
ortsconfig.json
) relative to the repository's root that specify external dependencies. The analyzer uses this to report dependency metrics and improve analysis accuracy. - Example:
dependency_file_paths = [
"src/client/",
"src/server/",
"app/"
]
If you want to analyze a monorepo on DeepSource, we recommend defining the package.json
paths for each package for better analysis results.
By default, the analyzer automatically detects and scans the package.json
file if found in the repository's root.
environment
-
Type: Array
-
Presence: optional
-
Description: The global variables related to the environments used that need to be predefined for the project.
-
Available Values:
nodejs
,browser
,jest
,mocha
,jasmine
,jquery
,mongo
,cypress
,vitest
nodejs
- Adds Node.js global variables and Node.js scopingbrowser
- Adds Browser specific global variablesjest
- Adds Jest global variablesmocha
- Adds Mocha testing global variablesjasmine
- Adds Jasmine testing global variables for version 1.3 and 2.0jquery
- Adds jQuery global variablesmongo
- Adds MongoDB global variablescypress
- Adds Cypress global variablesvitest
- Adds Vitest global variables
-
Default Values: ["nodejs", "browser"]
-
Example:
environment = ["nodejs","browser","jest"]
The analyzer automatically detects jest
, mocha
, jasmine
and, cypress
at the moment.
If your project uses NodeJS, Jquery or MongoDB, please mention them explicitly.
module_system
-
Type: String
-
Presence: optional
-
Description: The type of modules used in the project.
-
Available Values:
commonjs
,es-modules
andamd
commonjs
- The CommonJS Module System. (require
/exports
)es-modules
- ES Modules (import
/export
)amd
- Asynchronous Module Definition (define
/require
)
-
Default Value: "es-modules"
-
Example:
module_system = "es-modules"
dialect
- Type: String
- Presence: optional
- Description: The dialect of JavaScript used in the project. Currently, we support TypeScript and Flow.
- Available Value:
typescript
andflow
- Default Value: "typescript"
- Example:
dialect = "flow"
skip_doc_coverage
-
Type: Array
-
Presence: optional
-
Description: Specify which artifacts to skip when detecting documentation issues and calculating documentation coverage.
-
Available Values:
function-declaration
,function-expression
,arrow-function-expression
,class-declaration
,class-expression
andmethod-definition
function-declaration
- Ignore function declarationsfunction-expression
- Ignore function expressionsarrow-function-expression
- Ignore arrow function expressionsclass-declaration
- Ignore class declarationsclass-expression
- Ignore class expressionsmethod-definition
- Ignore method definitions
-
Default Value: []
-
Example:
skip_doc_coverage = ["class-expression", "method-definition"]
style_guide
-
Type: String
-
Presence: optional
-
Description: A style guide is a set of standards that outline how code should be written and organized. Setting this will ensure that you follow established conventions, and will also allow the analyzer to raise issues for any style guide violations.
-
Available Values:
airbnb
,google
andstandard
airbnb
- Airbnb JavaScript Style Guidegoogle
- Google JavaScript Style Guidestandard
- Standard JavaScript Style Guide
-
Default Value: None
-
Example:
style_guide = "airbnb"
Sample config
meta
Configuration without version = 1
test_patterns = ["*/test/**"]
exclude_patterns = [
"public/**,",
"dist/**"
]
[[analyzers]]
name = "javascript"
enabled = true
If you use JavaScript Frameworks like React
, Angular
or Vue
, we recommend you add meta fields to fine-tune the analyzer.
meta
Configuration with version = 1
test_patterns = ["*/test/**"]
exclude_patterns = [
"public/**,",
"dist/**"
]
[[analyzers]]
name = "javascript"
enabled = true
[analyzers.meta]
plugins = ["react"]
module_system = "es-modules"
environment = [
"jquery",
"mongo"
]
dialect = "flow"
skip_doc_coverage = ["class-expression", "method-definition"]
ESLint Rules & Plugins
The DeepSource JavaScript analyzer fully supports all the ESLint core JavaScript rules. Along with that, it currently supports the following ESLint plugins:
- Node
- TypeScript
- React
- Vue
- Flow
- Ember
- Meteor
- Angular
- AngularJS
- Security
Dependency Calculation
DeepSource uses the package.json
file for calculating the count of third-party dependencies.
The package.json file format is supported by all major dependency managers like npm, pnpm, yarn and rush.