2016-12-31 159 views
0

我正在寫一個angular1 + angular2混合應用程序,它使用webpack作爲包打包器。如何強制webpack加載一個庫的umd包

在我的代碼導入庫(@角/升級)以這種方式

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

角的升級庫與下面的樹結構(簡體)坐在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做的,而不是加載@角/升級/靜態/的package.json包含右主定義指向UMD捆綁

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

是可實現的?

感謝, 加布

回答

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' 
     } 
    }, 
0

是否import UpgradeModule from '@angular/upgrade/bundles/upgrade-static.umd.js';工作?

的WebPack只能跟隨main中的package.json如果是的package.json在NPM模塊的根級別,所以在這種情況下,你必須訪問你直接要的文件。

+0

嗨德魯。感謝您的答案,但它似乎並沒有工作。 ''在編譯期間''找不到名稱'UpgradeModule''錯誤 – gabric