OverZealous / cdnizer

Node module for replacing local links with CDN links, includes fallbacks and customization
MIT License
52 stars 24 forks source link

Ignores angular-sanitize and ngMessages as well as odd behavior with file #12

Closed MikaAK closed 7 years ago

MikaAK commented 9 years ago

I recently found this plugin and have been using it with gulp however I'm running into a lot of issues. angular-sanitize and ngMessages both get completely ignored for options asides from initial recognition and the package is set to the angular.js package.

When using file manually as part of the object it seems to ignore the cdn option completely with the exception of js-data which it replaces completely with the content of cdn instead of the cdn url.

Cdnizer call

.pipe($.cdnizer({
  files: filePaths.CDNPossibilities
}))

Possibilities

CDNPossibilities: [
    {
      package: 'jquery',
      cdn: 'google:jquery'
    }, {
      package: 'angular',
      cdn: 'google:angular:angular.min.js'
    }, {
      package: 'angular-animate',
      cdn: 'google:angular:angular-animate.min.js'
    },{
      package: 'angular-cookies',
      cdn: 'google:angular:angular-cookies.min.js'
    }, {
      file: 'bower_components/angular-sanitize/**',
      package: 'angular-sanitize',
      cdn: 'google:angular:angular-sanitize.js'
    }, {
      file: 'bower_components/ng-messages/**',
      package: 'ng-messages',
      cdn: 'google:angular:angular-messages.js'
    }, {
      package: 'es5-shim',
      cdn: 'cdnjs:es5-shim'
    }, {
      package: 'json3',
      cdn: 'cdnjs:json3'
    }, {
      package: 'lodash',
      cdn: 'cdnjs:lodash.js'
    }, {
      package: 'angular-ui-router',
      cdn: 'cdnjs:angular-ui-router'
    }, {
      package: 'ng-tags-input',
      cdn: 'cdnjs:ng-tags-input'
    }, {
      file: '/bower_components/js-data/dist/js-data.js',
      package: 'js-data',
      cdn: 'cdnjs:js-data'
    }, {
      file: '/bower_components/js-data-angular/dist/js-data-angular.js',
      package: 'js-data-angular',
      cdn: 'cdnjs:js-data-angular'
    }, {
      file: 'bower_components/angular-ui-select/**',
      package: 'angular-ui-select',
      cdn: 'cdnjs:angular-ui-select'
    }, {
      file: 'bower_components/danialfarid-angular-file-upload/**',
      package: 'danialfarid-angular-file-upload',
      cdn: 'cdnjs:danialfarid-angular-file-upload'
    }, {
      file: 'bower_components/sweetalert/**',
      package: 'sweetalert',
      cdn: 'cdnjs:sweetalert'
    }, {
      file: 'bower_components/velocity/**',
      package: 'velocity',
      cdn: 'cdnjs:velocity'
    }, {
      file: 'bower_components/angular-bootstrap/**',
      package: 'angular-bootstrap',
      cdn: 'cdnjs:angular-ui-bootstrap'
    }, {
      file: 'bower_components/angular-ui-sortable/**',
      package: 'angular-ui-sortable',
      cdn: 'cdnjs:angular-ui-sortable'
    }
  ]

Resulting html file

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/es5-shim/4.0.6/es5-shim.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/json3/3.3.2/json3.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.8.0/lodash.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular-animate.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular-cookies.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.14/angular-ui-router.min.js"></script>
    <script src="/bower_components/angular-ui-select/dist/select.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/ng-tags-input/2.3.0/ng-tags-input.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
    <script src="/bower_components/sweetalert/lib/sweet-alert.js"></script>
    <script src="/bower_components/velocity/velocity.js"></script>
    <script src="/bower_components/velocity/velocity.ui.js"></script>
    <script src="/bower_components/angular-ui-sortable/sortable.js"></script>
    <script src="cdnjs:js-data"></script>
    <script src="cdnjs:js-data-angular"></script>
    <script src="/bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script>
    <script src="/bower_components/danialfarid-angular-file-upload/dist/angular-file-upload-all.js"></script>
OverZealous commented 9 years ago

What's the input HTML file look like? Have you tried narrowing it down to a minimally reproduceable bug?

Generally speaking, these sorts of issues are a configuration issue.

MikaAK commented 9 years ago

This is the full html file, I couldn't see any issues that would cause this behaviour

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <base href="/">
    <!-- inject:header-->
    <!-- endinject-->
    <!-- inject:vendor:css-->
    <!-- endinject-->
    <!-- inject:bower:css-->
    <link rel="stylesheet" href="/bower_components/angular-ui-select/dist/select.css">
    <link rel="stylesheet" href="/bower_components/ng-tags-input/ng-tags-input.min.css">
    <link rel="stylesheet" href="/bower_components/sweetalert/lib/sweet-alert.css">
    <!-- endinject-->
    <!-- inject:custom:css-->
    <!-- endinject-->
  </head>
  <body data-grid-framework="b3f" data-grid-color="red" data-grid-opacity="0.2" data-grid-zindex="10" data-grid-gutterwidth="30px">
    <div class="application-loading">
      <svg id="logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0" y="0" viewBox="0 0 247 47" enable-background="new 0 0 247 47" xml:space="preserve">
        <path fill="#FFFFFF" d="M0 46.3L10.3 1.3h26.4l-1.9 7.9H17.7l-2.4 10.6h13.6L27 27.7H13.5l-2.4 10.6h17.2l-1.8 7.9L0 46.3 0 46.3z"></path>
        <path fill="#FFFFFF" d="M41.5 47c-3.1 0-5.5-1-7.1-3 -1.6-2-2.4-4.9-2.4-8.6s0.6-7.3 1.8-10.7c1.2-3.4 3.1-6.3 5.7-8.6 2.6-2.4 5.7-3.5 9.1-3.5 1.5 0 3.7 0.4 6.6 1.1l1.3 0.4L59.8 0h8.9L58 46.3h-8.6l0.6-3.4c-0.9 1-2.2 2-3.8 2.9C44.4 46.6 42.9 47 41.5 47zM55 20.9c-2.6-0.6-4.6-0.9-6.3-0.9 -1.6 0-3 0.9-4.2 2.6 -1.2 1.8-2.1 3.7-2.7 6.1C41.3 31 41 33.2 41 35.3c0 2.8 1.1 4.2 3.4 4.2 0.7 0 1.7-0.4 2.9-1.2s2.3-1.6 3.2-2.4l1.3-1.2L55 20.9z"></path>
        <path fill="#FFFFFF" d="M69 13.2h8.7l-0.9 25.7H78l11.3-25.7h8.9L82.7 46.3H68.8L69 13.2z"></path>
        <path fill="#FFFFFF" d="M95 46.3l7.6-33.1h8.8l-7.6 33.1H95zM103.3 9.7l2.1-9h8.9l-2.1 9H103.3z"></path>
        <path fill="#FFFFFF" d="M127.4 20c-1.3 0-2.3 0.3-3 0.9 -0.7 0.6-1.1 1.3-1.1 2.2 0 0.8 0.3 1.4 0.9 1.8 0.6 0.4 2.2 1 4.8 1.8 2.6 0.8 4.5 1.7 5.8 2.7 1.3 1.1 2 2.7 2 5.1 0 4.1-1.4 7.3-4.1 9.4s-6.3 3.2-10.8 3.2c-1.9 0-3.8-0.2-5.7-0.6 -1.9-0.4-3.3-0.8-4.2-1.2l-1.5-0.5 1.7-6.5c4.2 0.8 7.9 1.2 11 1.2s4.6-1.1 4.6-3.2c0-0.6-0.3-1-0.9-1.4 -0.6-0.4-1.7-0.7-3.2-1.2 -3.1-0.9-5.5-1.9-6.9-3.1 -1.5-1.2-2.3-2.9-2.3-5.1 0-4.1 1.4-7.3 4-9.6 2.7-2.3 5.9-3.5 9.7-3.5 2.1 0 4.1 0.2 6.1 0.5 2 0.3 3.4 0.7 4.4 1l1.5 0.5 -1.6 6.6C134 20.4 130.3 20 127.4 20z"></path>
        <path fill="#FFFFFF" d="M157.6 12.4c8.7 0 13 4.2 13 12.5 0 3.6-0.6 7-1.8 10.3 -1.2 3.3-3.1 6.1-5.7 8.4s-5.7 3.5-9.2 3.5c-8.7 0-13-4.1-13-12.5 0-3.5 0.7-7 1.9-10.3 1.3-3.3 3.2-6.1 5.9-8.4C151.3 13.6 154.2 12.4 157.6 12.4zM153.9 39.5c2.4 0 4.3-1.5 5.8-4.5 1.5-3 2.2-6.4 2.2-10.2 0-3.2-1.4-4.8-4.2-4.8 -2.4 0-4.3 1.5-5.8 4.5s-2.2 6.4-2.2 10.2C149.6 37.9 151.1 39.5 153.9 39.5z"></path>
        <path fill="#FFFFFF" d="M170.3 46.3l7.6-33.1h8.8l-1.2 4.7c1.3-1.2 3-2.4 5.1-3.5s3.8-1.8 5.3-2l-2.6 9.2c-2.1 0.7-4.7 1.7-7.7 3l-1.6 0.7 -4.8 20.9L170.3 46.3 170.3 46.3z"></path>
        <path fill="#FFFFFF" d="M186.6 46.3l2.3-10.1h9l-2.3 10.1H186.6z"></path>
        <path fill="#FFFFFF" d="M199.7 46.3l7.6-33.1h8.8l-7.6 33.1H199.7zM208.1 9.7l2.1-9h8.9l-2.1 9H208.1z"></path>
        <path fill="#FFFFFF" d="M232.9 12.4c8.7 0 13 4.2 13 12.5 0 3.6-0.6 7-1.8 10.3 -1.2 3.3-3.1 6.1-5.7 8.4s-5.7 3.5-9.2 3.5c-8.7 0-13-4.1-13-12.5 0-3.5 0.7-7 1.9-10.3s3.2-6.1 5.9-8.4C226.6 13.6 229.5 12.4 232.9 12.4zM229.2 39.5c2.4 0 4.3-1.5 5.8-4.5 1.5-3 2.2-6.4 2.2-10.2 0-3.2-1.4-4.8-4.2-4.8 -2.4 0-4.3 1.5-5.8 4.5s-2.2 6.4-2.2 10.2C224.9 37.9 226.4 39.5 229.2 39.5z"></path>
      </svg>
      <h4 class="loading-text">Loading Files</h4>
      <div class="progress">
        <div role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" class="progress-bar"></div>
      </div>
    </div>
    <ui-view></ui-view>
    <!-- inject:bower:js-->
    <script src="/bower_components/jquery/dist/jquery.js"></script>
    <script src="/bower_components/es5-shim/es5-shim.js"></script>
    <script src="/bower_components/json3/lib/json3.js"></script>
    <script src="/bower_components/lodash/lodash.js"></script>
    <script src="/bower_components/angular/angular.js"></script>
    <script src="/bower_components/angular-animate/angular-animate.js"></script>
    <script src="/bower_components/angular-cookies/angular-cookies.js"></script>
    <script src="/bower_components/angular-ui-router/release/angular-ui-router.js"></script>
    <script src="/bower_components/angular-ui-select/dist/select.js"></script>
    <script src="/bower_components/angular-sanitize/angular-sanitize.js"></script>
    <script src="/bower_components/ng-tags-input/ng-tags-input.min.js"></script>
    <script src="/bower_components/ng-messages/angular-messages.js"></script>
    <script src="/bower_components/sweetalert/lib/sweet-alert.js"></script>
    <script src="/bower_components/velocity/velocity.js"></script>
    <script src="/bower_components/velocity/velocity.ui.js"></script>
    <script src="/bower_components/angular-ui-sortable/sortable.js"></script>
    <script src="/bower_components/js-data/dist/js-data.js"></script>
    <script src="/bower_components/js-data-angular/dist/js-data-angular.js"></script>
    <script src="/bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script>
    <script src="/bower_components/danialfarid-angular-file-upload/dist/angular-file-upload-all.js"></script>
    <!-- endinject-->
    <!-- inject:vendor:js-->
    <!-- endinject-->
    <!-- inject:custom:js-->
    <!-- endinject-->
  </body>
</html>
OverZealous commented 9 years ago

That's not a very minimal case. I don't really have the time to try to recreate the bug right now. If you can get it down to a small case (say, a single path and a simple Gulp file) and verify that the issue still exists, I'll be happy to look into it more.

pencilcheck commented 9 years ago

I don't know if this is related but some angular files are replaced with the wrong cdn files:

  1. bower_components/angular-sanitize/angular-sanitize.js
  2. bower_components/angular-messages/angular-messages.js

are being replaced with angular.min.js

when I use 'google:angular' in the options

and using 'jsdelivr:angularjs' will replace the following files:

  1. bower_components/angular-sanitize/angular-sanitize.js
  2. bower_components/angular-messages/angular-messages.js
  3. bower_components/angular-material/angular-material.js

with angular.min.js

OverZealous commented 9 years ago

@pencilcheck You should open a new bug for this issue (but I'll be honest: I don't know when I'm going to have time to get around to fixing this right now).

elsoybean commented 7 years ago

@pencilcheck, I know this is probably a year+ too late for you, but if anyone else runs into this, it's because "sanitize" is 8 characters so "-sanitize" matches the pattern for revisions. You can work around this by explicitly setting allowRev to false.

OverZealous commented 7 years ago

@elsoybean Thanks—I happen to have that filed already (though I probably won't be releasing a new version any time soon at this point.)

I'll close this in favor of the one that covers it better.

https://github.com/OverZealous/cdnizer/issues/16