如何使用angular-cli从角度构建中排除文件。我只是在<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>3.4.0</version>
</dependency>
和tsconfig.json
文件中添加要排除的路径,但是当我运行tsconfig.app.json
时,angular仍在尝试编译文件。
有什么想法吗?
答案 0 :(得分:7)
使用tsconfig.json
的exclude
属性(在根级别),即:
{
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
答案 1 :(得分:1)
您可以使用ng eject
获取webpack.config.js。您可以根据需要进行修改。但是,之后您将无法使用ng serve
或ng build
。
要再次使用这些命令,您必须修改.angular-cli.json
。删除属性&#39; projects.ejected&#39;或将其设置为false。 How to undo Angular 2 Cli ng-eject
答案 2 :(得分:1)
在angular.json文件中,编辑构建部分,如下所示:
...
"assets": [
"src/assets",
"src/favicon.ico"
],
"styles": [
"src/styles.scss"
],
"scripts": []
},
"configurations": {
"production": {
"assets": [
{
"glob": "**/*",
"input": "src/assets/",
"ignore": [
"**/test.json",
"**/test"
],
"output": "/assets/"
},
{
"glob": "favicon.ico",
"input": "src/",
"output": "/"
}
],
...
这仍然会执行默认的导入操作,但是在运行ng build --prod时删除指定的文件/目录(test.json和/ test),但是仍然可以通过ng serve使用它们,这对于本地用户来说非常有用开发。
请记住,如果您在.gitignore
文件中包含敏感信息,也要将该文件排除。
在编辑tsconfig.json
时我无法使其正常工作,但以上内容确实很吸引人!
基于找到的示例的解决方案here
答案 3 :(得分:1)
我将要从构建中排除的文件的正则表达式添加到src/tsconfig.app.json
。
假设我添加了文件./src/app/components/my-component/my-component.stub.ts
来帮助进行单元测试。
npm run build
和ng serve --prod=true
命令默认情况下仅排除以...spec.ts
结尾的文件,并包括所有其他文件。
为了排除上述文件,请向src/tsconfig.app.json
添加正则表达式,如下所示:
"exclude": [
"**/*.stub.ts"
]
Angular将从构建命令中排除项目中任何以.stub.ts
结尾的文件。
完整的src/tsconfig.app.json
示例:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"module": "es2015",
"types": []
},
"exclude": [
"src/test.ts",
"**/*.spec.ts",
"**/*.stub.ts"
]
}
答案 4 :(得分:0)
我注意到,如果您将.
放在该路径的前面,它将起作用:
{
"extends": "../tsconfig.json",
"compilerOptions": {
...
},
"exclude": [
...
"./yourPathToExclude/**/*"
]
}
答案 5 :(得分:0)
这是在某些情况下可能有效的另一种解决方案。
在angular.json(位于Angular项目的根目录中)中,默认情况下,您将在生产环境的构建配置中看到此文件替换块。
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
只需在其中添加您自己的文件替换,替换文件中的任何内容都不会编译到应用中。
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
},
{
"replace": "src/yourconfig.ts",
"with": "src/yourconfig.prod.ts"
}
],
替换的文件不再使用的导入也会被应用程序忽略,因此,使用上面的示例,如果被忽略的配置文件引用了许多其他特定于环境的文件,它们也将被忽略。
您还可以在许多环境中执行此操作:https://angular.io/guide/build
答案 6 :(得分:0)
我没有找到仅在生产模式下删除文件夹的方法。 使用tsconfig或使用angular.json构建配置
我发现这样做的唯一方法(不是“干净”)是在构建后删除该文件夹。
例如我的package.json:
...
"build": "ng build",
"build:dev": "npm run build -- -c dev",
"build:prod": "npm run build -- -c production && npm run removeMocks",
"removeMocks": "rimraf dist/myProject/mocks"
...
此Angular CLI线程已关闭,但未回答: https://github.com/angular/angular-cli/issues/6050#issuecomment-422288566