Package Exports
- typescript-language-server/lib/cli
- typescript-language-server/lib/commands
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (typescript-language-server) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
TypeScript Language Server
Language Server Protocol implementation for TypeScript wrapping tsserver.
Based on concepts and ideas from https://github.com/prabirshrestha/typescript-language-server and originally maintained by TypeFox
Maintained by a community of contributors like you
Installing
npm install -g typescript-language-serverRunning the language server
typescript-language-server --stdioCLI Options
Usage: typescript-language-server [options]
Options:
-V, --version output the version number
--stdio use stdio
--node-ipc use node-ipc
--log-level <log-level> A number indicating the log level (4 = log, 3 = info, 2 = warn, 1 = error). Defaults to `2`.
--socket <port> use socket. example: --socket=5000
--tsserver-log-file <tsServerLogFile> Specify a tsserver log file. example: --tsserver-log-file=ts-logs.txt
--tsserver-log-verbosity <verbosity> Specify tsserver log verbosity (off, terse, normal, verbose). Defaults to `normal`. example: --tsserver-log-verbosity=verbose
--tsserver-path <path> Specify path to tsserver. example: --tsserver-path=tsserver
-h, --help output usage informationinitializationOptions
The language server accepts various settings through the initializationOptions object passed through the initialize request. Refer to your LSP client's documentation on how to set these. Here is the list of supported options:
| Setting | Type | Description |
|---|---|---|
| hostInfo | string | Information about the host, for example "Emacs 24.4" or "Sublime Text v3075". Default: undefined |
| logVerbosity | string | The verbosity level of the information printed in the log. Accepts values: "off", "terse", "normal", "requesttime", "verbose". Default: undefined ("off"). |
| maxTsServerMemory | number | The maximum size of the V8's old memory section in megabytes (for example 4096 means 4GB). The default value is dynamically configured by Node so can differ per system. Increase for very big projects that exceed allowed memory usage. Default: undefined |
| plugins | object[] | An array of { name: string, location: string } objects for registering a Typescript plugins. Default: [] |
| preferences | object | Preferences passed to the Typescript (tsserver) process. See below for more info. |
The preferences object is an object specifying preferences for the internal tsserver process. Those options depend on the version of Typescript used but at the time of writing Typescript v4.3.4 contains these options:
interface UserPreferences {
disableSuggestions?: boolean;
quotePreference?: "auto" | "double" | "single";
/**
* If enabled, TypeScript will search through all external modules' exports and add them to the completions list.
* This affects lone identifier completions but not completions on the right hand side of `obj.`.
*/
includeCompletionsForModuleExports?: boolean;
/**
* Enables auto-import-style completions on partially-typed import statements. E.g., allows
* `import write|` to be completed to `import { writeFile } from "fs"`.
*/
includeCompletionsForImportStatements?: boolean;
/**
* Allows completions to be formatted with snippet text, indicated by `CompletionItem["isSnippet"]`.
*/
includeCompletionsWithSnippetText?: boolean;
/**
* If enabled, the completion list will include completions with invalid identifier names.
* For those entries, The `insertText` and `replacementSpan` properties will be set to change from `.x` property access to `["x"]`.
*/
includeCompletionsWithInsertText?: boolean;
/**
* Unless this option is `false`, or `includeCompletionsWithInsertText` is not enabled,
* member completion lists triggered with `.` will include entries on potentially-null and potentially-undefined
* values, with insertion text to replace preceding `.` tokens with `?.`.
*/
includeAutomaticOptionalChainCompletions?: boolean;
importModuleSpecifierPreference?: "shortest" | "project-relative" | "relative" | "non-relative";
/** Determines whether we import `foo/index.ts` as "foo", "foo/index", or "foo/index.js" */
importModuleSpecifierEnding?: "auto" | "minimal" | "index" | "js";
allowTextChangesInNewFiles?: boolean;
lazyConfiguredProjectsFromExternalProject?: boolean;
providePrefixAndSuffixTextForRename?: boolean;
provideRefactorNotApplicableReason?: boolean;
allowRenameOfImportPath?: boolean;
includePackageJsonAutoImports?: "auto" | "on" | "off";
displayPartsForJSDoc?: boolean;
generateReturnInDocTemplate?: boolean;
}From the preferences options listed above, this server explicilty sets the following options (all other options use their default values):
{
includeCompletionsForModuleExports: true,
includeCompletionsWithInsertText: true,
}Supported Protocol features
textDocument/didChange (incremental)
textDocument/didClose
textDocument/didOpen
textDocument/didSave
textDocument/codeAction
textDocument/completion (incl. completion/resolve)
textDocument/definition
textDocument/documentHighlight
textDocument/documentSymbol
textDocument/executeCommand
textDocument/formatting
textDocument/rangeFormatting
textDocument/hover
textDocument/rename
textDocument/references
textDocument/signatureHelp
workspace/symbol
Development
Build
yarnTest
yarn testWatch
yarn watchPublishing
yarn publish