0

我正在关注AngularJS Grunt 插件的官方环回文档,并且在 Grunt 文件下创建任务时遇到了问题。

文档做得很好,在如何使用插件部分它提供了一个很好的实现示例,但不清楚stagingproduction部分的含义。

我也有兴趣为urlBaseAPI 提供不同的服务,因为我的 AngularJS 应用程序是从不同的地址提供服务的,所以我添加了该apiUrl选项,但是当我loopback_sdk_angular从 Grunt 文件启动任务时一切顺利,但似乎没有考虑我的apiUrl选项stagingproduction部分(都尝试过,没有任何改变)构建一个api.service.jswithvar urlBase = '/api'而不是var urlBase = 'http://127.0.0.1:3000/api'.

我的咕噜声文件:

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吗?

4

2 回答 2

0

您正在尝试将全局选项添加到loopback_sdk_angulargrunt 任务,但您以错误的方式进行了操作。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'
        }
    }
  1. 您为每个子任务定义了特定于环境的选项

当您有不同的环境输入和输出文件夹时很有用。

    // 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'
        }
    }
于 2017-01-20T11:06:30.870 回答
0

有人可以解释一下这两个部分的含义以及我缺少什么来使 var urlBase 假设http://127.0.0.1:3000/api的正确值吗?

当我按照您的方式配置 loopback_sdk_angular 插件时,我遇到了同样的问题。但是,当 options 和 staging 属性直接位于 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'
      }
    }

环回 AngularJS Grunt 插件文档中可能有一个小故障。如果您注意到,环回插件的描述遵循我使用的格式并且工作正常。而示例中的格式对我们双方都不起作用。

于 2016-05-26T12:05:50.510 回答