Файл .csproj должен содержать только файлы приложений для компиляции, если вы включили что-либо из node_modules, я бы исключил эту папку из вашего проекта. Это необходимо для предотвращения каких-либо странных попыток компиляции компилятором типа VS. Затем, в вашем tsconfig.json, у вас будет exclude: ['node_modules', 'typings']
(если вы используете @types вместо типирования, то, очевидно, у вас не будет папки с образцами). То же самое, просто не позволяя компилятору трогать эти папки.
Пример tsconfig.json с исключающий на месте:
{
"compileOnSave": true,
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": true,
"noImplicitAny": false,
"suppressImplicitAnyIndexErrors": true
},
"exclude": [
"node_modules", "typings"
]
}
принять вещи шаг дальше и, надеюсь, вам сэкономить некоторое время, когда вы решите развернуть приложение, что я думаю, вы должны учитывать следующее:
Когда дело доходит до развертывания или публикации - в то время как вы можете опубликовать всю папку и ее подпапки, она огромна и занимает много времени. Был еще один подобный вопрос, когда попытка публикации node_module заблокировала коробку dev и, в конечном счете, разбила его VS.
Попытка вручную найти и включить все зависимости: a) очень много времени и b) может свести вас с ума, убедившись, что все включено и только один раз. Я подумал о том, чтобы что-то делать, и отверг его.
Для лучшего или худшего npm и node_modules, смешанных с Windows и ASP.NET, подразумевается путь наименьшего сопротивления, и большинство коэффициентов усиления изучает дополнительный набор инструментов для объединения вашего приложения. Документация немного встряхивается, если вы, скажем, достаточно глупы, чтобы использовать Webpack 2 (в бета-версии, что я и сделал), но результаты состоят в том, что у вас может быть задание на npm-скрипт, задача gulp или что-то еще, созданное только тем, что вы необходимость развертывания. У меня есть папка node_modules 150 + MB, и в конце концов я получаю 1MB (производственный) набор JS-файлов (дрожание дерева велико, и мне это нравится).
Инструменты для рассмотрения SystemJSBuilder с GulpJS (если вы уже используете SystemJS, это естественный путь для принятия), Rollup (у этого была проблема с интерфейсами TypeScript и проблема, которую я подала, была указана как известная и без хорошее исправление), Webpack, и я уверен, что есть еще кое-что, что я забываю и, вероятно, даже пытался.
Существует множество учебных пособий для каждого из них, и у каждого есть здоровое сообщество вокруг них.Угловая команда имеет WebPack учебник, который является хорошим началом, если вы берете этот маршрут: https://angular.io/docs/ts/latest/guide/webpack.html
строитель команды SystemJS имеет свою собственную документацию: https://github.com/systemjs/builder, но я считаю, вы должны объединить его с глотком документацией, чтобы узнать, как это части вместе.
Rollup является немного менее развит, поэтому я использовал их документацию http://rollupjs.org/guide/ и такие примеры, как https://github.com/manfredsteyer/angular2-aot-webpack2-rollup
Вы не используете файл tsconfig.json? Я спрашиваю, потому что неясно, есть ли вы и переопределило это 'exclude: []' путем включения файлов в .csproj или что именно происходит. – silentsod
@silentsod Я использую файл 'tsconfig.json'. Мое первоначальное предположение состоит в том, что функция .csproj' аналогична и что '.csproj' контролирует все, что находится в файле' tsconfig.json', поэтому я предполагаю, что есть какой-то оператор XML, который я могу включить в ' .csproj', чтобы исключить файлы машинописных файлов из компиляции в сборке проекта. * Тем не менее, я просмотрел подробный вывод MSBuild, и похоже, что он находит файл 'tsconfig.json' и, по-видимому, читает его, поэтому я не уверен, что' .sproj' делает за кулисами. – alex
Файл .csproj должен содержать только ваши файлы приложений для компиляции, если вы включили что-либо из node_modules, я бы исключил эту папку из вашего проекта. В любом случае вы не должны публиковать ничего прямо из node_modules. Затем, в вашем tsconfig.json, у вас будет ваш 'exclude: ['node_modules', 'typings']' (если вы используете @types вместо типирования, то, очевидно, у вас не будет папки с типизацией). – silentsod