2016-05-24 16 views
6

Merhaba ben bir webpack yapılandırma var WebPack her giriş için bir dosya oluşturmak silme ya da değil:bu giriş noktaları ile

entry: { 
    'polyfills': './src/polyfills.ts', 
    'vendor': './src/vendor.ts', 
    'app':  './src/app.ts', 
    'css': './src/css/main.unique.scss', 
    'index': './src/index.unique.html', 
    }, 

Benim webpack bir [name].bundle.js ve her giriş için bir [name].map yaratıyor.
O javascript girişleri ilk 3 için mantıklı ama CSS ve INDEX girişleri Yani ben de inşa sonrası sadece ExtractTextPlugin

daha sonra tedavi olsun benim ana CSS dosyasını ve benim ana html dosyasını işleme içindir

webpackJsonp([1],[ 
/* 0 */ 
/***/ function(module, exports) { 

    // removed by extract-text-webpack-plugin 

/***/ } 
]); 
//# sourceMappingURL=css.map 

Nasıl bazı girişler için dosyaları oluşturmak dEĞİLiçin webpack söyleyebilir: m sadece içeriyor css.bundle.js ve css.map gibi bazı çöp ile sıkışmış? (css/index gibi)
Veya alternatif olarak bu gereksiz dosyaları derledikten sonra silmek için? Sana yararsız olacaktır demetleri hangi bunu söylerseniz, bu yararsız demetlerinin çıkışını atlar ki (aşağıdaki kodu) birlikte bir SuppressEntryChunksPlugin kesmek peşin

cevap

8

yılında

teşekkürler. Bu gibi webpack.config.js bunu kullanın:

var SuppressEntryChunksPlugin = require('./SuppressEntryChunksPlugin'); 
... 
    entry: { 
    'app': './src/app.ts', 
    'css': './src/css/main.unique.scss', 
    'index': './src/index.unique.html', 
    }, 
    plugins: [ 
    // don't output the css.js and index.js bundles 
    new SuppressEntryChunksPlugin(['css', 'index']) 
    ] 

Feragatnamelerini: Bu girişlerinden css/html ayıklamak ve çıkış dosyaları yazmak için extract-loader ve dosya yükleyici ile birlikte benim için çalışıyor. ExtractTextPlugin ile test etmedim. (Bu webpack-dev-sunucu ile çalışır. Ve başarıyla bunları kullanıyorsanız harici sourcemaps bastırmak gibi görünüyor. Ben WebPack 1.13 ve 2.2.1 ikisi ile kullandım.)

// SuppressEntryChunksPlugin.js 

function SuppressEntryChunksPlugin(options) { 
    if (typeof options === 'string') { 
    this.options = {skip: [options]}; 
    } else if (Array.isArray(options)) { 
    this.options = {skip: options}; 
    } else { 
    throw new Error("SuppressEntryChunksPlugin requires an array of entry names to strip"); 
    } 
} 

SuppressEntryChunksPlugin.prototype.apply = function(compiler) { 
    var options = this.options; 

    // just before webpack is about to emit the chunks, 
    // strip out primary file assets (but not additional assets) 
    // for entry chunks we've been asked to suppress 
    compiler.plugin('emit', function(compilation, callback) { 
    compilation.chunks.forEach(function(chunk) { 
     if (options.skip.indexOf(chunk.name) >= 0) { 
     chunk.files.forEach(function(file) { 
      // delete only js files. 
      if (file.match(/.*\.js$/)) { 
      delete compilation.assets[file]; 
      } 
     }); 
     } 
    }); 
    callback(); 
    }); 
}; 

module.exports = SuppressEntryChunksPlugin; 

Ayrıca, "webpack uzmanı" nın tersi ne olursa olsun, bunu yapmak için kesinlikle daha iyi bir yol var. (Muhtemelen birileri bu testleri gerçek bir yayınlanmış web paketi eklentisine dönüştürmek ister, testler ve niçin?)

+0

Oh seçeneklerin tam listesini görebilir, bir cehennem konum webpack hacker, dude :) Paylaşım için teşekkürler! Bana iyi bir demet kıllar kurtardın :) –

+0

Bu benim için çalışmıyor: '( – NealVDV

+0

@NealVDV Bunu duyduğuma üzüldüm. Ne tür bir Webpack? Extract-loader? Başarısız mı, yoksa neyin yanlış gidiyor? – medmunds

0

Adlarını temel almak yerine, çıktı dosyalarına göre fazladan dosyaları kaldırmak için bir webpack plugin araya koydum - webpack yapılandırmamıza ekstra giriş noktaları eklemeye devam ederken, benim için biraz daha geleceğe dair bir kanıt oldu.

sizin webpack.config.js dosyasında npm veya yarn

npm install webpack-extraneous-file-cleanup-plugin --save-dev 
yarn add webpack-extraneous-file-cleanup-plugin --dev 

kullanarak yükleyin:

const ExtraneousFileCleanupPlugin = require('webpack-extraneous-file-cleanup-plugin'); 

module.exports = { 
    ... 
    plugins: [ 
    new ExtraneousFileCleanupPlugin({ 
     extensions: ['.js'] 
    }) 
    ] 
} 

Sen Webpack Extraneous File Cleanup Plugin Github Page