web-dev-qa-db-ja.com

Webpackの条件付き必須

私はwebpackで同形のKeyValueストアを書いています。

これは現在、ライブラリをロードするための私のアプローチですが、webpackは両方のrequireを解決したいので、明らかに機能しません。正しいアプローチは何ですか?

var db = null;

if (typeof window === 'undefined') {
    // node context
    db = require('level');
} else {
    // browser context
    db = require('gazel');
}

target をwebpackに提供できることは知っています。しかし、私はそれをどのように使用するのか分かりません。

ありがとう!

13
vardump

resolve.alias があなたのために働くと思います。作成するビルドに応じて、dbモジュールをlevelまたはgazelを指すように設定します。

14

webpack.config.js

module.exports = {
plugins: [
    new webpack.DefinePlugin({
        "process.env": {
            BROWSER: JSON.stringify(true)
        }
    })
]}

your-universal.js

var db = null;
if (!process.env.BROWSER) {
    // node context
    db = require('level');
} else {
    // browser context
    db = require('gazel');
}
10
Lonelydatum