Ric*_*mes 16 systemjs systemjs-builder angular
我正在尝试捆绑一个有角度的4.0.0应用程序.
我已经尝试过browserify但是新的angular-loader插件(允许不需要带有templateUrl的组件中的moduleId)不会被调用,因此模板最终会出错路径.
所以我转移到了systemjs-builder,但问题是当它运行该插件时崩溃说文档没有定义.
有没有办法将文档注入构建器?
或者我做错了什么?
这是我正在测试的简单构建器(systemjs-config是角度快速入门).
var path = require("path"); 
var Builder = require('systemjs-builder');
var builder = new Builder('src/frontend', 'src/frontend/systemjs.config.js');
builder .bundle('main.js', 'bundle.js') 
.then(function() {   
     console.log('Build complete'); 
}) 
.catch(function(err) {   
     console.log('Build error');   
     console.log(err); 
});
我长期以来一直在寻找这个问题的解决方案。由于找不到它,我修改了systemjs-angular-loader.js以绕过该错误。通过这个 hack,systemjs-builder 现在可以工作了。
var templateUrlRegex = /templateUrl\s*:(\s*['"`](.*?)['"`]\s*)/gm;
var stylesRegex = /styleUrls *:(\s*\[[^\]]*?\])/g;
var stringRegex = /(['`"])((?:[^\\]\\\1|.)*?)\1/g;
module.exports.translate = function(load){
  if (load.source.indexOf('moduleId') != -1) return load;
  var document=document || null;
  if(document){
    var url = document.createElement('a');
    url.href = load.address;
    var basePathParts = url.pathname.split('/');
    basePathParts.pop();
    var basePath = basePathParts.join('/');
    var baseHref = document.createElement('a');
    baseHref.href = this.baseURL;
    baseHref = baseHref.pathname;
    if (!baseHref.startsWith('/base/')) { // it is not karma
      basePath = basePath.replace(baseHref, '');
    }
  }
  else{
    var address=load.address;
    address=address.replace('file:///'+__dirname+'/', '');
    var basePathParts = address.split('/');
    basePathParts.pop();
    var basePath = basePathParts.join('/');
  }
  load.source = load.source
    .replace(templateUrlRegex, function(match, quote, url){
      var resolvedUrl = url;
      if (url.startsWith('.')) {
        resolvedUrl = basePath + url.substr(1);
      }
      return 'templateUrl: "' + resolvedUrl + '"';
    })
    .replace(stylesRegex, function(match, relativeUrls) {
      var urls = [];
      while ((match = stringRegex.exec(relativeUrls)) !== null) {
        if (match[2].startsWith('.')) {
          urls.push('"' + basePath + match[2].substr(1) + '"');
        } else {
          urls.push('"' + match[2] + '"');
        }
      }
      return "styleUrls: [" + urls.join(', ') + "]";
    });
  return load;
};
| 归档时间: | 
 | 
| 查看次数: | 281 次 | 
| 最近记录: |