Angular 针对不同客户机的不同版本

Angular 针对不同客户机的不同版本,angular,npm,angular-cli,Angular,Npm,Angular Cli,我正在Angular 6中开发一个应用程序,希望能安装在许多客户机上 它们中的每一个都需要个性化,但它们有许多共同的部分 我希望有一个目录结构: /src /app /components /navbar /navbar.component.html /navbar.component.ts

我正在Angular 6中开发一个应用程序,希望能安装在许多客户机上

它们中的每一个都需要个性化,但它们有许多共同的部分

我希望有一个目录结构:

/src    
    /app        
        /components             
            /navbar
                /navbar.component.html
                /navbar.component.ts            
            /footer
                /footer.component.html
                /footer.component.ts            
            /store
                /store.component.html
                /store.component.ts             
            /home
                /home.component.html
                /home.component.ts      
        /customer1          
            /navbar
                /navbar.component.html
                /navbar.component.ts            
            /home
                /home.component.html
                /home.component.ts      
        /customer2          
            /home
                /home.component.html
                /home.component.ts      
        /customer3          
            /footer
                /footer.component.html
                /footer.component.ts
如您所见,customer1自定义了导航栏和主页,2自定义了主页,3自定义了页脚

我想要的是在制作

npm run build
我可以做类似的事情

npm run build customer1 
并获取目录下的文件(如果存在)和组件下的文件(如果没有)


你认为有可能吗?

要进行此类管理/自动化,Angular提供的最佳工具是Angular示意图。看看,这是一个很好的起点

在您的案例中,您需要创建一个原理图,创建一个角度项目,其中设置了所有公共部分,我认为这些部分如下所示:

/src    
/app        
    /components             
        /navbar
            /navbar.component.html
            /navbar.component.ts            
        /footer
            /footer.component.html
            /footer.component.ts            
        /store
            /store.component.html
            /store.component.ts             
        /home
            /home.component.html
            /home.component.ts 

然后,在生成基本代码之后,您或您的客户将能够修改它,并像其他任何角度项目一样构建它。

是的,您可以使用
npm脚本和
ng build--environment=
执行类似的操作,但这并不意味着您必须这样做。您是否考虑过将您的通用组件作为Angular library或npm包的一部分,并为每位客户提供应用程序/回购?如果愿意,您还可以将其与角度示意图结合使用。

您可以通过环境实现:

  • 为你的客户创造一个新的环境
  • 创建一个包含所有要更改的文件的新文件夹
  • 打开angular.json文件并在中搜索配置选项 项目,并搜索您的环境(可能是为您创建它) 必须这样做)
  • 查找文件替换并使用此语法替换 你需要的
  • 如果你想为这个环境服务,你必须把它包括在
    serve/configurations中的angular.json文件

    • 解决与此相关的其他问题我问:

      答案帮助我找到更优雅的解决方案,使用Environments属性(我创建了尽可能多的属性),而不是使用fileReplacements,使用这个变量在我的.ts文件中使用differents函数,或者在我的.html文件中使用ng if或ng show