【问题标题】:Link to global node modules folder from Angular2 app从 Angular2 应用程序链接到全局节点模块文件夹
【发布时间】:2016-10-02 00:04:05
【问题描述】:
我希望有一个集中的节点模块文件夹(使用 npm update -g 保存到 C 盘)而不是包含在应用程序中的通常本地文件夹,因为 Angular2 CLI 在本地安装了 125mb+ 价值的节点模块文件夹。
所以在打字稿文件中,我们之前像这样导入了角核心:
import { Component } from '@angular/core';
但显然这不起作用,是否可以在某处放置前缀或硬 URL 以告诉应用在全局文件夹中搜索模块?
【问题讨论】:
标签:
node.js
typescript
npm
angular
【解决方案1】:
修改SystemJs 配置(通常是systemjs.config.js 文件),以便将@angular 映射到您集中的node_modules\@angular 文件夹,而不是本地文件夹。
var map = {
'app' : 'app',
'@angular' : 'C:/node_modules/@angular', // path to centralized repo
};
【解决方案2】:
这是你的 systemjs.config 文件应该是什么:
(function(global) {
// map tells the System loader where to look for things
var map = {
'app': 'src',
'@angular': 'global location'
};
// packages tells the System loader how to load when no filename and/or no extension
var packages = {
'app': { main: 'main.js', defaultExtension: 'js' },
'rxjs': { defaultExtension: 'js' },
//can add as per your requirement
};
var packageNames = [
'@angular/common',
'@angular/compiler',
'@angular/core',
'@angular/http',
'@angular/platform-browser',
'@angular/platform-browser-dynamic',
'@angular/router',
'@angular/router-deprecated',
'@angular/testing',
'@angular/upgrade',
];
// add package entries for angular packages in the form '@angular/common': { main: 'index.js', defaultExtension: 'js' }
packageNames.forEach(function(pkgName) {
packages[pkgName] = { main: 'index.js', defaultExtension: 'js' };
});
})(this);