使用grunt将资源替换为CDN路径

时间:2015-08-23 10:17:41

标签: regex angularjs amazon-s3 gruntjs

我正在使用自耕农generator-angular-fullstack。它的grunt构建任务将缩小,连接并创建加速文件。

现在我想进一步改进它,我打算将这些加速文件上传到s3并替换我的index.html中的网址。

完成的html文件中的

路径是

<script src="app/9083921.app.js"></script>

我想用

替换它们

<script src="http://cdn/9083921.app.js"></script>

我将grunt-aws-s3用于将文件上传到s3,这是令人兴奋的。

现在将其替换为index.html文件

我尝试了grunt-replacegrunt-text-replacegrunt-regex-replace,似乎没有一个在我的案例中起作用。我使用/app\/(.*)\.(js|css)/g作为http://path/$1.$2尝试使用正则表达式。没有工作

grunt-processhtml已包含在生成器中,有助于获取文件夹中的所有文件。像这样

<!-- build:css(client) app/app.css -->

所以我无法使用grunt-processhtml来重写路径

是否有任务要做这件事或我做错了什么。

编辑我的cdnify任务

cdnify: {
      dev: {
        options: {
          base: '//cdn.com/'
        },
        files: [{
          expand: true,
          cwd: 'dist',
          src: 'public/app/index.html',
          dest: 'dist'
        }]
      }
    },

1 个答案:

答案 0 :(得分:1)

你试过grunt-cdnify吗?它几乎应该涵盖你:

  

用于重写HTML和CSS中的静态资源URL的Grunt插件。

     

它做什么

     

该任务在以下位置查看指定文件中的URL以进行重写:

     

<img src="____">

     

<script src="____"></script>

     

<link rel="stylesheet" href="____">

     CSS中的

background-image: url(____);(包括HTML中的内部标记)

基本任务也非常简单:

cdnify: {
  someTarget: {
    options: {
      base: '//cdn.example.com/stuff/'
    },
    files: [{
      expand: true,
      cwd: 'app',
      src: '**/*.{css,html}',
      dest: 'dist'
    }]
  }
}