The Basic Idea of DefinePlugin

Webpack 提供一個 DefinePlugin 的方法,它可以改寫匹配的 free variables

請看下面這個程式碼:

var foo;

// Not free, not ok to replace
if(foo === 'bar') {
  console.log('bar');
}

// Free, ok to replace
if(bar === 'bar') {
  console.log('bar');
}

如果我們把 bar 換成字串 'bar'

var foo;

// Not free, not ok to replace
if(foo === 'bar') {
  console.log('bar');
}

// Free, ok to replace
if('bar' === 'bar') {
  console.log('bar');
}

進一步來說,'bar' === 'bar' 等於 true,所以 UglifyJS 讓我們可以這樣做:

var foo;

// Not free, not ok to replace
if(foo === 'bar') {
  console.log('bar');
}

// Free, ok to replace
if(true) {
  console.log('bar');
}

以上述程式碼為基礎,UglifyJS 就可以偵測 if 述句:

var foo;

// Not free, not ok to replace
if(foo === 'bar') {
  console.log('bar');
}

// Free, ok to replace
console.log('bar');

這就是 DefinePlugin 的核心概念。

results matching ""

    No results matching ""