2016-05-13 45 views
0

我在字面上跟隨官方loopback documentation for AngularJS Grunt plugin,並且在創建Grunt文件下的任務時遇到問題。Loopback AngularJS JavaScript SDK - Gruntfile插件

的文檔做得很好,在如何使用插件部分它提供了實現的很好的例子,但它沒有明確的stagingproduction部分的含義。

我也有興趣,以提供API的不同urlBase引起我的AngularJS應用程序從不同的地址送達,所以我增加了apiUrl選項,但是當我從繁重的開始loopback_sdk_angular任務文件一切順利,但它似乎沒有考慮我在stagingproduction部分(嘗試兩個,沒有任何更改)apiUrl選項var urlBase = '/api'而不是var urlBase = 'http://127.0.0.1:3000/api'構建api.service.js

我咕嚕文件:

grunt.loadNpmTasks('grunt-loopback-sdk-angular'); 

... 
//grunt init config 
... 

loopback_sdk_angular: { 
     services: { 
     options: { 
      input: 'server/server.js', output: 'client/services/api.services.js' 
     }, staging: { 
      options: { 
      apiUrl: 'http://127.0.0.1:3000/api' 
      } 
     } 
//, production: { 
//   options: { 
//   apiUrl: 'http://127.0.0.1:3000/api' 
//   } 
//  } 
     } 
    } 


... 

grunt.registerTask('generate-services', ['loopback_sdk_angular']); 
//end 

可能有人請解釋一下我,兩個部分的意思,我錯過了什麼,使var urlBase承擔的http://127.0.0.1:3000/api正確的價值?

回答

0

有人可以請解釋一下這兩部分的含義,以及我錯過了什麼讓var urlBase假定http://127.0.0.1:3000/api的值正確嗎?

當我按照您的方式配置loopback_sdk_angular插件時,我遇到了同樣的問題。但是,如果選項和分段屬性直接位於loopback_sdk_angular屬性下,而不是位於services屬性內,則問題已解決。

loopback_sdk_angular: { 
    options: { 
     input: 'server/server.js', output: 'client/services/api.services.js' 
    }, staging: { 
     options: { 
     apiUrl: 'http://127.0.0.1:3000/api' 
     } 
    } 

loopback AngularJS Grunt plugin documentation中可能有小故障。如果你注意到,loopback插件的描述遵循我使用的格式,並且工作正常。而例子中的格式不適用於我們兩個人。

0

您正在嘗試將全局選項添加到loopback_sdk_angular grunt任務,但您是以錯誤的方式完成的。 loopback_sdk_angular可以有選擇兩種方式

  1. 如果你通過一個全局配置選項對所有其他任務,每個子任務或部分將在他們繼承

有用此選項定義,當你每個環境都有一個通用輸入輸出文件夾

// You were trying to achieve this..... 
    loopback_sdk_angular: { 
     options: { 
     input: 'server/server.js', 
     output: 'client/services/api.services.js' 
     }, 
     staging: { 
     //input and ouput are inherited from above global options 
     options: { 
     apiUrl: 'http://staging.url/api' 
     }, 
     production: { 
     //input and output are inherited from above global options 
     options: { 
      apiUrl: 'http://production.url/api' 
     } 
    } 
  • 你在哪裏爲每個子任務定義
  • 有用當你有不同的輸入和輸出文件夾特定於環境的選項適用於環境。

    // But you actually did this 
        loopback_sdk_angular: { 
         staging: { 
         options: { 
          input: 'server/server.js', 
          // Different output folder for staging 
          output: 'client/staging/services/api.services.js' 
          apiUrl: 'http://staging.url/api' 
         } 
         }, 
         production: { 
         options: { 
          apiUrl: 'http://production.url/api', 
          input: 'server/server.js', 
          // Different output folder for production 
          output: 'client/production/services/api.services.js' 
         } 
        }