Не удается заставить tsserver-плагины работать в Atom или VSC

Цель меня и моих коллег - завершить код в наших шаблонах Angular 2, как описано в этой гифке.

Поэтому нам нужно

tsserver-plugins

с участием

tslint-language-service и @ angular / language-service.

Итак, мы попробовали:

npm install tsserver-plugins -g
npm install angelozerr/tslint-language-service --save-dev
npm install @angular/language-service --save-dev

и мы добавили это в наш tsconfig.json> compilerOptions:

"plugins": [
    { "name": "tslint-language-service"}, 
    { "name": "@angular/language-service"}
]

Поскольку я не мог понять, как указать плагину Atom TypeScript использовать tsserver-plugins вместо tsserver, я взломал его, переименовав

/usr/local/bin/tsserver to

/usr/local/bin/_tsserver

а также

/usr/local/bin/tsserver-plugins to

/usr/local/bin/tsserver

Теперь я подумал, что это должно сработать, но этого не произошло.

Потом перезапустил Атом - ничего не изменилось. Затем я перезапустил свой компьютер - ничего не изменилось.

Затем я установил typescript @ next (2.3.0.dev ...) локально и глобально и повторил все.

Мой коллега безуспешно пытался заставить его работать с Visual Studio Code. Что мы делаем не так?


person DerZyklop    schedule 02.03.2017    source источник


Ответы (1)


Сначала tsserver-plugins требуется tsserver, и он должен работать с любой версией TypeScript. Это не форк цсервера.

tsserver-plugins оборачивает ts.createLanguageService для загрузки plugins, объявленного в вашем tsconfig.json.

Для этого bin / tsserver-plugins :

  • загружает typescript/lib/tsserver.js в строку
  • объедините before-tsserver.js с typescript/lib/tsserver.js
  • запустить результат concat как узел узла.

Чтобы получить typescript/lib/tsserver.js, у вас есть 2 стратегии:

  • tsserver-plugins устанавливается в том же node_modules чем typescript и получает typescript/lib/tsserver.js с require(typescript/lib/tsserver.js)
  • tsserver-plugins НЕ установлен в том же node_modules, что и typescript, поэтому вам нужно указать путь к TypeScript с параметром --typescriptDir при вызове tsserver-plugins.

Например, если у вас это есть:

  • C: / dir1 / node_modules / tsserver-плагины
  • C: / dir2 / node_modules / машинописный текст

Вам необходимо выполнить:

node C:/dir1/node_modules/tsserver-plugins/bin/tsserver-plugins --typescriptDir C:/dir2/node_modules/typescript

И, наконец, tslint-language-service и @angular/language-service необходимо разместить в той же папке node_modules, что и TypeScript.

person Angelo    schedule 02.03.2017