31753


webpackのProviderPluginについて質問です。

[code]

    const {hoge, fuga} = require('hoge-fuga');
    
[/code]

のように一つのモジュールの返り値を分割したい場合はどう記述すればいいのでしょうか。

[code]

    // やりたいイメージ
    module.exports = {
        plugins: [
            new webpack.ProvidePlugin({
                {hoge, fuga}: 'hoge-fuga'
            })
        ]
    }
    
[/code]


CC BY-SA 3.0
2016-10-09T03:28:03.757
29439
2017-03-05T14:47:51.667
19069
question
javascript node.js webpack
webpackのProviderPluginについて


WebPackは知りませんが、お探しなのは[分割代入](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment)では無いでしょうか（ECMAScript
6の機能）。  
代入先の変数と同じ名前のプロパティを持ったオブジェクトを返すと出来ます。

[code]

    function x() {
      return {a: 9, b: 'hello', c:Date.now()};
    }
    
    //宣言と同時に
    var {a, b, c} = x();
    console.log(1, a, b, c);
    
    //先見と代入を分ける場合は()で囲む必要あり
    //var a, b, c;
    //({a, b, c} = x());
    
    //変数名を変える場合
    var {a: foo, b:bar, c:time} = x();
    console.log(2, foo, bar, time);
    
    //上2つを同時に
    var m, n, o;
    ({a: m, b: n, c:o} = x());
    console.log(3, m, n, o);
    
    //class
    class Z {
      constructor() {
        this.t = Date.now();
        this.h = 'hello';
        this.nine = 9;
      }
    }
    var {t, h, nine} = new Z();
    console.log(4, nine, h, t);
[/code]

個人的に変数名を変える構文が左右逆な気がしますが、あっています。


CC BY-SA 3.0
2016-12-10T14:43:52.147
31073
2016-12-10T14:43:52.147
3974
29439
answer

[code]

    const {hoge, fuga} = require('hoge-fuga');
    
[/code]

ができるモジュール `hoge-fuga` は既にあって（分割代入は理解していて）、同じことを `webpack.ProvidePlugin()`
で行いたいということでしょうか。

それを実現する機能が webpack 2.2.0 で実装されました。

[feat request: ProvidePlugin property import · Issue #2864 ·
webpack/webpack](https://github.com/webpack/webpack/issues/2864)

分割代入のような記法ではなく、モジュール名に加えてプロパティ名を指定します。

[code]

    const webpack = require('webpack');
    
    module.exports = {
        plugins: [
            new webpack.ProvidePlugin({
                hoge: ['hoge-fuga', 'hoge'],
                fuga: ['hoge-fuga', 'fuga']
                // ちなみに ['hoge-fuga', 'hoge', 'piyo'] なら hoge-fuga.hoge.piyo 相当
            })
        ]
    };
    
[/code]


CC BY-SA 3.0
2017-01-10T12:49:43.450
31753
2017-03-05T14:47:51.667
2017-03-05T14:47:51.667
8000
8000
29439
answer