Angular2的Webpack2外部

时间:2017-05-31 19:08:27

标签: javascript webpack

我正在创建一个Angular2库,所以我想将Angular2定义为外部依赖。

阅读有关此主题的文档(这是稀缺的),我希望以下工作:

externals: {
    'moment': 'moment',
    '@angular/core': '@angular/core'
}
// or externals: ['moment', '@angular/core']

但是这会为@ angular / core生成错误,因为webpack会产生以下无效的javascript:

module.exports = @angular/core;

我是否误解了externals应该如何使用?获取有效javascript的唯一方法是使用有效的标识符,如下所示:

externals: {
    'moment': 'moment',
    '@angular/core': 'mySpecialLittleUnicorn'
}

但显然,这个图书馆永远不会存在。我的图书馆用户是否应该定义别名' mySpecialLittleUnicorn' for' @ angular / core'什么的(怎么样?)。

这应该如何运作。

1 个答案:

答案 0 :(得分:0)

Webpack支持几种格式,以便在构建模块后对其进行处理。例如,要支持commonjs,您可以将前缀commonjs添加到外部(或设置您自己的库以导出为commonjs)。

output.libraryTarget: "commonjs2"

externals: { '@angular/core': 'commonjs @angular/core' }

但是,要支持所有模块类型并为所有模块类型导出自己的库,最好的方法是为所有类型声明外部,以及为所有类型构建自己的库。

所有类型的外部:

    '@angular/core': {root: ['ng', 'core'], commonjs: '@angular/core', commonjs2: '@angular/core', amd: '@angular/core'},

为所有类型导出您自己的构建:see this SO answer