Pull to refresh

Comments 11

Вебпак это хорошо. Но предложенное вами решение все еще далеко от идеала.


Когда у вас много общих "библиотек", таскать их извне (вообще ходить вне папки с исходниками) плохо. Следующий ваш шаг, чтобы это исправить:


  1. написать команду
    npm init в папке build (или как она у вас там называется), присвоить какое-то имя этой библиотеки, например my-lib-base.


  2. Там же npm link
  3. В папке с вебпаком где лежат зависимые проекты написать npm link my-lib-base.
  4. Использовать как обычную npm библиотеку.

Это позволяет не делать огромные пути "вверх", не лазить вне папки с исходниками, структурировать проекты. При этом вебпак будет подхватывать изменения библиотеки base на лету и пересобирать зависимые библиотеки.


В идеале развернуть свой npm репозиторий, чтобы можно было разрабатывать независимо библиотеки разным людям, при этом тем, кто разрабатывает "ядро" не нужно было запускать локально вебпак со сборкой, например, ui-элементов.

В Visual Studio группа зависимых проектов объединяется в solution. В русской версии MSDN используется дословный перевод «решение». А я по привычке говорю «солюшен».

Спасибо за объяснение.
Как человеку, не знакомому с Visual Studio, это показалось странным англицизмом.

Я вот этого момента не понял
Еще один нюанс — помимо Webpack, студия все еще билдит наш TypeScript. В TypeScript с версии 2.0 в tsconfig.json можно запретить билд файлов директивой exclude с паттерном ./Scripts/*. Webpack проигнорирует эту настройку. Но в TypeScript 2.1 компилятор должен найти хотя бы один файл для билда, иначе упадет ошибка. Пришлось оставить один пустой файл для принесения в жертву студии.


Если я просто кладу пустой файл tsconfig в корень проекта, то компиляция в VisualStudio отключается совсем, остаётся только мой Gulp+'gulp-typescript'

Вы вроде как пытались добиться того же, к чему такие сложности с exclude и пустым файлом ts?
Если я просто кладу пустой файл tsconfig в корень проекта, то компиляция в VisualStudio отключается совсем

Не так. Точнее, зависит от версии плагина TypeScript. Если мне не изменяет память, плагин использует tsconfig при его наличии с версии 1.6.


А у нас много скриптов в "основном" проекте все еще билдится студией — не все за раз на Webpack перевели. Поэтому их игнорим директивой exclude.


А в паре "зависимых" проектов удалось все перевести на Webpack. Но т.к. студия в любом случае силится что-нибудь сблидить, пришлось создать пустой файл ts. Это костыль, связанный с работой плагина TypeScript, и я хочу от него (костыля) избавиться. Буду рад советам.

Странно, у меня теперь и не пытается или я чего то не понимаю.
У вас VS2016 с установленными сважими
  • TypeScript for Visual Studio 2015
  • vswebessentials

?

Visual Studio 2015 (14) Update 3 + TypeScript for Microsoft Visual Studio 2.0.6.
На другой машине пробую Visual Studio 2017 RC (15.0.26014.0) + TypeScript for Microsoft Visual Studio 2.1.3.


WebEssentials не установлен.


В настройках проекта вот такая картинка, но студия использует tsconfig. Может, он у вас не в корне проекта?


Настройки проекта

Да, у меня именно так как на картинке стало. И tsconfig у меня в корне проекта.
(интересно, что до того как узнал от вас про tsconfig настраивал в проекте и не работало :) )

Содержимое такое:
{
  "compileOnSave": false,
}

compileOnSave — тоже не обязательно. стоит положит ьпустой файл с { } и всё отключается. Я искал этот способ, и вот наконец заработало, чему рад.

А по версиям как то так
Microsoft Visual Studio Enterprise 2015
Version 14.0.25424.00 Update 3
Microsoft .NET Framework Version 4.6.01038

ASP.NET and Web Tools 2015.1 (Beta8) 14.1.11107.0
ASP.NET and Web Tools 2015.1 (Beta8)

ASP.NET Web Frameworks and Tools 2012.2 4.1.41102.0
For additional information, visit http://go.microsoft.com/fwlink/?LinkID=309563

ASP.NET Web Frameworks and Tools 2013 5.2.40314.0
For additional information, visit http://www.asp.net/
TypeScript 1.8.35.0
TypeScript tools for Visual Studio



И я не понял где эта ошибка вылазит, о которой вы говорите?

Заводим файл test.ts и tsconfig.json. В tsconfig.json пишем:


{
  "include": ["./test.ts"],
  "exclude": ["./*"]
}

Если комплятор tsc версии 2.1.4 запустить в этой папке получим ошибку:
No inputs were found in config file '<folder>/tsconfig.json'. Specified 'include' paths were '["./test.ts"]' and 'exclude' paths were '["./*"]'.


Если "./*" в exclude поменять, например, на "./bin/*" — компилятор работает без ошибок.


С более ранними версиями (до 2.1) — работает в обоих случаях.

Only those users with full accounts are able to leave comments. Log in, please.