1

我正在编写一个 angular1 + angular2 混合应用程序,它使用 webpack 作为包捆绑器。

在我的代码中,我以这种方式导入库(@angular/upgrade)

import { UpgradeModule } from '@angular/upgrade/static';

Angular 升级库位于 node_module 文件夹中,具有以下树结构(简化):

@angular/upgrade
├── bundles
│   ├── upgrade-static.umd.js
│   ├── upgrade-static.umd.min.js
│   ├── upgrade.umd.js
│   └── upgrade.umd.min.js
├── index.d.ts
├── index.js
├── index.js.map
├── index.metadata.json
├── package.json
├── static
│   └── package.json
├── static.d.ts
├── static.js.map
├── static.metadata.json
└── static.js

问题是,默认情况下 webpack 解析我的 import 语句加载 @angular/upgrade/static.js,一个 ES6 文件,一旦与其余代码捆绑在一起就会产生错误。

我希望 webpack 做的是加载 @angular/upgrade/static/package.json ,其中包含指向 umd 包的正确主定义

{"main": "../bundles/upgrade-static.umd.js"}

这是可以实现的吗?

谢谢, 加布

4

2 回答 2

1

尽管此处描述的模块解析: https ://webpack.github.io/docs/resolving.html 默认情况下应该能够执行我上面描述的操作,为了实现这一点,我必须使用该resolve.alias属性。这是我使用的配置:

resolve: {
        extensions: [ '.js', '.ts', '' ],
        modulesDirectories: [ path.resolve( __dirname, 'node_modules' ) ],
        alias: {
            '@angular/upgrade/static$': '../../node_modules/@angular/upgrade/bundles/upgrade-static.umd.js'
        }
    },
于 2017-01-03T08:51:51.720 回答
0

import UpgradeModule from '@angular/upgrade/bundles/upgrade-static.umd.js';行得通吗?

如果 package.json 位于 npm 模块的根级别, Webpack 仅main在 package.json 之后,因此在这种情况下,您必须直接访问所需的文件。

于 2016-12-31T18:35:54.510 回答