Комментарии 11
Вебпак это хорошо. Но предложенное вами решение все еще далеко от идеала.
Когда у вас много общих "библиотек", таскать их извне (вообще ходить вне папки с исходниками) плохо. Следующий ваш шаг, чтобы это исправить:
написать команду
npm init
в папкеbuild
(или как она у вас там называется), присвоить какое-то имя этой библиотеки, напримерmy-lib-base
.
- Там же
npm link
- В папке с вебпаком где лежат зависимые проекты написать
npm link my-lib-base
. - Использовать как обычную npm библиотеку.
Это позволяет не делать огромные пути "вверх", не лазить вне папки с исходниками, структурировать проекты. При этом вебпак будет подхватывать изменения библиотеки base
на лету и пересобирать зависимые библиотеки.
В идеале развернуть свой npm репозиторий, чтобы можно было разрабатывать независимо библиотеки разным людям, при этом тем, кто разрабатывает "ядро" не нужно было запускать локально вебпак со сборкой, например, ui-элементов.
А что такое "солюшен"?
Еще один нюанс — помимо 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 настраивал в проекте и не работало :) )
Содержимое такое:
{
"compileOnSave": false,
}
compileOnSave — тоже не обязательно. стоит положит ьпустой файл с { } и всё отключается. Я искал этот способ, и вот наконец заработало, чему рад.
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) — работает в обоих случаях.
Webpack в Visual Studio для больших солюшенов