【问题标题】:Grunt concat files on a different domain or on different server不同域或不同服务器上的 Grunt concat 文件
【发布时间】:2014-12-08 18:58:55
【问题描述】:

编辑工作版本和解释

我想使用 grunt 和 grunt-concat 将来自不同服务器的文件连接到我的目标文件夹中:

  concat: {
      options: {
        separator: ';'
      },
      dist: {
        src: ['dev.staticcontent.com/media/clientcontent/library/*.js', 'js/*.js'],       
        dest: 'dist/<%= pkg.name %>.js'
      }
    },

每次我尝试时,我都没有收到来自 grunt 的错误,但我的 dist/marketing-home.js 文件是空的......就像它没有找到任何东西一样。

控制台:

C:\Project\My>grunt 
Running "jshint:files" (jshint) task
>> 1 file lint free.

Running "concat:dist" (concat) task
File dist/marketing-home.js created.

Running "uglify:dist" (uglify) task

Done, without errors.

新版本

在 Kris 的帮助下,我能够在不通过网络使用 grunt-exec 和使用 COPYXCOPY shell 命令的情况下做到这一点。

例如

   exec: {
     copy : {
        cmd: function () {
               var path = "\\\\dev-server123\\WebSites\\Static_Contents\\Media\\clientcontent";
               return "copy dist\\*.min.js " + path + " /y";
        }
     }
   }

【问题讨论】:

  • src 路径不正确或 GruntFile 无法访问。我不肯定绝对路径是否有效,但我认为它们会。其他一切似乎都是正确的。这是dev.staticcontent.com/media/clientcontent/library/ 的绝对路径吗?
  • 不,它不是绝对路径,它是 URL 示例:dev.staticcontent.com/media/clientcontent/library/calendar.js(只是示例不起作用)
  • 我也试过绝对路径,还是不行:(
  • 您是否尝试过使用相对路径来测试您的 GruntFile?也许只是在与您的 GruntFile.. 相同的目录中创建一个测试目录并指向它。如果那行得通,那么它可能就是路径。如果不是,则可能是 GruntFile 中的某些内容不正确。
  • @KrisHollenbeck 是的,我确实尝试在我当前的项目中使用路径 ('js/*.js'),它确实有效。我知道这与路径有关。我想知道是否有办法从不同的域添加文件。我无法让它工作。如果你能告诉我如何将 google jquery cdn 包含到我的 gruntfile 中(src: ['http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'],我的其他私人文件也是如此。

标签: javascript gruntjs grunt-contrib-concat


【解决方案1】:

看起来不像 concat 任务处理来自远程位置的绝对路径或文件。但是,我能够使用 curl 任务与 concat 任务结合使用它。

示例:

module.exports = function(grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    curl: {
      'download/jquery.js': 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js',
    },
    concat: {
        js: {
            src: ['download/jquery.js'],
            dest: 'output/test.js'
        },
    }
  });

  grunt.loadNpmTasks('grunt-curl');
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.registerTask('default', ['curl', 'concat']);
};

演示目录结构:

我将这个节点模块包用于 CURL。 https://github.com/twolfson/grunt-curl,可能有更好的。但这个似乎工作正常。

【讨论】:

  • 很酷,它确实有效!太糟糕了,我必须通过互联网而不是直接从我的服务器。反正谢谢很多!
  • 很高兴知道这一点。但是,如果要连接的文件与 GruntFile 具有相同的根或父级,那么您应该能够使用相对路径而不必使用 CURL 任务。而且我认为即使它们在同一台服务器上但在不同的目录下(即 gruntFile 的父级兄弟),您也可以使用相对路径。但这也可能取决于您的权限设置方式。
猜你喜欢
  • 2014-03-17
  • 1970-01-01
  • 2018-05-28
  • 2015-06-04
  • 2015-11-27
  • 2016-11-28
  • 2011-08-23
  • 1970-01-01
  • 2012-06-21
相关资源
最近更新 更多