【问题标题】:ember cli build fingerprinting external URL?ember cli构建指纹识别外部URL?
【发布时间】:2015-08-31 21:52:21
【问题描述】:

我有这条路线的播客。模型挂钩将 getJSON 调用到不同域上的 url。 当我为生产而构建时,ember-cli 似乎认为这是一种资产并对其进行指纹识别:

http://datafruits.streampusher.com/podcasts/datafruits-d31215e1fe906877c93d6ac2208c8da2.json

我尝试将它添加到 ember-cli-build.js 中指纹选项的排除属性中,但我似乎得到了相同的结果。我也尝试了完整的 URL。

module.exports = function(defaults) {
  var app = new EmberApp(defaults, {
    // Add options here
    fingerprint: {
      exclude: ['datafruits.json']
    }
  });

是的,我的应用程序被称为“datafruits”,如果这与它有任何关系的话。 这是前面提到的播客路线:

import Ember from 'ember';

export default Ember.Route.extend({
  actions: {
    willTransition: function(transition) {
      Ember.$("#podcastsModal").modal('hide');
    }
  },

  setupController: function(controller, model){
    this._super(controller, model);
    Ember.run.schedule('afterRender', this, function () {
      Ember.$("#podcastsModal").modal('show');
      var _this = this;
      Ember.$("#podcastsModal").on('hidden.bs.modal', function () {
        console.log("modal exited");
        _this.transitionTo('application');
      });
    });
  },

  model: function(){
    return Ember.$.getJSON('http://datafruits.streampusher.com/podcasts/datafruits.json')
    .then(function(data){
      return data.podcast;
    });
  }

我的 ember-cli-build.js 的其余部分:

/* global require, module */
var EmberApp = require('ember-cli/lib/broccoli/ember-app');
var ES6Modules = require('broccoli-es6modules');
var esTranspiler = require('broccoli-babel-transpiler');
var mergeTrees = require('broccoli-merge-trees');

module.exports = function(defaults) {
  var app = new EmberApp(defaults, {
    // Add options here
    fingerprint: {
      //prepend: "//datafruitstest.s3-website-us-east-1.amazonaws.com/",
      exclude: ['datafruits.json']
    }
  });

  // Use `app.import` to add additional libraries to the generated
  // output files.
  //
  // If you need to use different assets in different
  // environments, specify an object as the first parameter. That
  // object's keys should be the environment name and the values
  // should be the asset to use in that environment.
  //
  // If the library that you are including contains AMD or ES6
  // modules that you would like to import into your application
  // please specify an object with the list of modules as keys
  // along with the exports of each module as its value.
  app.import(app.bowerDirectory + '/bootstrap/dist/js/bootstrap.js');
  app.import(app.bowerDirectory + '/bootstrap/dist/css/bootstrap.css');
  app.import(app.bowerDirectory + '/moment/moment.js');
  app.import(app.bowerDirectory + '/fullcalendar/dist/fullcalendar.css');
  app.import(app.bowerDirectory + '/fullcalendar/dist/fullcalendar.js');
  app.import(app.bowerDirectory + '/jplayer/dist/jplayer/jquery.jplayer.js');
  app.import(app.bowerDirectory + '/jsTimezoneDetect/jstz.min.js');
  app.import(app.bowerDirectory + '/emojione/assets/css/emojione.css');
  app.import(app.bowerDirectory + '/emojione/lib/js/emojione.js');
  app.import(app.bowerDirectory + '/autolink/autolink.js');

  var phoenixTree = "./vendor/phoenix";
  var phoenixAmdFiles = new ES6Modules(phoenixTree, {
    format: 'amd',
    esperantoOptions: {
      strict: true,
      amdName: "phoenix"
    }
  });
  var phoenixTranspiledFiles = esTranspiler(phoenixAmdFiles, {});

  return mergeTrees([app.toTree(), phoenixTranspiledFiles]);
};

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    进行指纹识别的broccoli-asset-rev 库似乎希望排除不带扩展名的文件名。如果您使用以下内容,它应该构建没有指纹datafruits.json

    fingerprint: {
      //prepend: "//datafruitstest.s3-website-us-east-1.amazonaws.com/",
      exclude: ['datafruits']
    }
    

    【讨论】:

    • 这确实有效,但现在我的应用程序 JS 没有指纹,因为我的应用程序被称为“datafruits”。 :(
    • Looking at their tests ,这可能是一个错误。我至少会报告它,看看它是否真的不能与 lib 一起使用。
    • 所以进一步看,我相信这是broccoli-asset-rewrite 的一个问题,它没有考虑文件与应用程序JS 不同的事实(应该是指纹)。重命名路径时似乎没有考虑完整的文件路径。
    • 刚刚在这里报告了这个问题:github.com/rickharrison/broccoli-asset-rewrite/issues/24
    • 不错!我会关注这个问题。 :)
    猜你喜欢
    • 1970-01-01
    • 2019-10-13
    • 2015-02-08
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 2023-04-02
    相关资源
    最近更新 更多