如何强制 webpack 加载库的 umd 包
how to force webpack to load umd bundle of a library
我正在编写一个 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 会解析我的导入语句加载@angular/upgrade/static.js,这是一个 ES6 文件,一旦与其余代码捆绑在一起就会产生错误。
我希望 webpack 做的是加载 @angular/upgrade/static/package.json,它包含指向 umd bundle
的正确主要定义
{"main": "../bundles/upgrade-static.umd.js"}
可以实现吗?
谢谢,
唠叨
import UpgradeModule from '@angular/upgrade/bundles/upgrade-static.umd.js';
有效吗?
如果 package.json 位于 npm 模块的根级别,Webpack 仅遵循 package.json 中的 main
,因此在这种情况下,您必须访问所需的文件直接。
虽然这里描述的模块分辨率:
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'
}
},
我正在编写一个 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 会解析我的导入语句加载@angular/upgrade/static.js,这是一个 ES6 文件,一旦与其余代码捆绑在一起就会产生错误。
我希望 webpack 做的是加载 @angular/upgrade/static/package.json,它包含指向 umd bundle
的正确主要定义{"main": "../bundles/upgrade-static.umd.js"}
可以实现吗?
谢谢, 唠叨
import UpgradeModule from '@angular/upgrade/bundles/upgrade-static.umd.js';
有效吗?
如果 package.json 位于 npm 模块的根级别,Webpack 仅遵循 package.json 中的 main
,因此在这种情况下,您必须访问所需的文件直接。
虽然这里描述的模块分辨率:
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'
}
},