从角度环境中排除文件

时间:2019-03-12 09:25:29

标签: angular angular-cli

我正在构建在不同客户端中安装的应用程序。 为此,我使用了不同的环境,例如

environment.costumer1.ts environment.costumer2.ts

事实是,有些客户使用Services Workers,而另一些则没有,所以我创建了两个不同的app.module.ts

app.module.ts
app.module-without-service-worker.ts

因此,当客户端要求我提供不带Service Worker的应用程序时(我使用的通知服务是我不想显示谁不想要的服务),我将其放置在fileReplacements内的angular.json中

{   
  "replace": "src / app / app.module.ts",
  "with": "src / app / app.module-without-service-worker.ts" 
}

不好的是,在构建主应用程序时,出现以下错误:

  

错误:在D中键入AppComponent:/ developments / Patient Portal /   患者门户演示/ pp演示前端/ src / app / app.component.ts是   2个模块的声明的一部分:D中的AppModule:/发展   /患者门户/患者门户演示/ pp演示前端/ src /应用/   D中的app.module.ts和AppModule:/ developments / Patient Portal /   患者门户演示/ pp演示前端/ src / app / app.module-   没有service-worker.ts!

是否可以从环境中排除文件?

4 个答案:

答案 0 :(得分:0)

你不能使用

ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production })

只需在您的环境属性中定义一个标志。 看到 https://blog.angular-university.io/angular-service-worker/

答案 1 :(得分:0)

如果client1和client2有单独的版本,则只需执行以下操作

打开angular.json文件并找到行

"serviceWorker": true

如果您要激活服务人员,则该值为true,否则为false。

答案 2 :(得分:0)

我建议您在环境文件中创建一个属性。

environmentx.ts

export const environment = {
  production: false;
  serviceWorker: false;
};

app.module.ts

imports: [
    BrowserModule,
    AppRoutingModule,
    ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.serviceWorker && environment.production})
],

答案 3 :(得分:0)

我在为自己寻找答案时找到了你的帖子。

我尝试了基于构建配置加载不同组件(和不同路由配置)的方法,并且对我有用。

在Angular 9中工作。

这是我的angular.json:

"build": {
...
"configurations": {
   "custom": {
     "fileReplacements": [
       {
         "replace": "projects/my-app/src/app/app.module.ts",
         "with": "projects/my-app/src/app/app.module-custom.ts"
       }
     ]
   },
...
},
...
}
...
"serve": {
  ...
    "configurations": {
      ...
      "app": {
        "browserTarget": "rest-generator-app:build:custom"
      }
    }
  }

然后,当我投放我的应用程序时:

ng serve my-app --port=3000 -o --configuration=custom