我已经面对两种不同的方法,如何为Angular 2的ASP.NET Core项目组织项目结构:
在根项目文件夹中创建Angular app
文件夹,然后在部署期间使用脚本/任务运行程序(如gulp)将app
文件夹内容复制到wwwroot
文件夹。 / p>
可以在wwwroot文件夹中直接创建Angular app
文件夹。没有像gulp copy任务那样的其他行动。
对我而言,第一个选项被认为是更好的选项,因为您可以使用gulp复制任务更灵活地控制wwwroot
最终内容。但过去几天我发现不同的例子采用了第二种方法。此外,aspnetcore-angular2 yo生成器还将app文件夹直接放到wwwroot,并且不使用gulp。那么什么是最好的prectice?
答案 0 :(得分:1)
我不会直接将内容放入wwwroot中,将wwwroot排除在检查源代码管理(git / svn / etc。)之外是明智的,这样你就可以根据你的构建配置重新创建wwwdata的内容(即创建最小化文件或不尽量减少开发。
SCM中的垃圾更少,更容易发布,因为在构建/发布过程开始时总是从干净的wwwroot文件夹开始。
对于开发,你可以(也许应该保持你的SCM更干净),只需将编译好的文件保存到wwwroot中,并且只在项目的app文件夹(不在wwwroot中)中有TypeScript(* .ts)文件,然后你赢了每次更改文件的源代码后都需要运行gulp任务。
您需要设置两个选项。
compileOnSave
到true
,因此* .ts会在每次保存时被转换outDir
设置为wwwroot/app
,以便将已转换的* .js文件保存在wwwroot/app
文件夹(以及相对于项目根目录的子文件夹)这是我使用的示例tsconfig.json
。
{
"compileOnSave": true,
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"noEmitOnError": true,
"noImplicitAny": false,
"removeComments": false,
"outDir": "wwwroot/app",
"strictNullChecks": false
},
"exclude": [
"node_modules",
"wwwroot"
]
}
这种开发方式足以保存* .ts文件并重新加载网页(假设您的web项目在后台运行时会编写angular2代码,因为每次更改后都无需重新启动)。 / p>
保留用于构建和发布的gulp任务或将库复制到wwwroot / node_modules或wwwroot / lib文件夹。
我的项目结构类似于
ProjectRoot
| wwwroot
| | app
| | | components
| | | services
| App
| | components
| | services
...