Попытка расширить трекер webpack-bundle-tracker, чтобы он не отображал путь
У меня здесь есть файл webpack.config.js. Я пытаюсь изменить или перезаписать метод приложения (сохраненный как
BundleTracker
) так что когда
webpack-stats-prod.json
файл создается, он создает это (без пути):
{
"status": "done",
"assets": {
"78d4aa4961e00276aa1fe5487f7fcae4.eot": {
"name": "78d4aa4961e00276aa1fe5487f7fcae4.eot",
"path": "no path"
},
вместо этого (абсолютный путь):
{
"status": "done",
"assets": {
"78d4aa4961e00276aa1fe5487f7fcae4.eot": {
"name": "78d4aa4961e00276aa1fe5487f7fcae4.eot",
"path": "/Users/name/static/webpack/bundles/prod/78d4aa4961e00276aa1fe5487f7fcae4.eot"
},
Я пытаюсь сделать это, скопировав
webpack-bundle-tracker
приложение в новую переменную (
NoPathBundleTracker
), а затем перезаписав
writeOutput
метод.
Пока я получаю эту ошибку:
TypeError: Class constructor BundleTrackerPlugin cannot be invoked without 'new'
но мне интересно, лучший ли это способ добиться моего нестандартного вывода.
const path = require('path');
const webpack = require('webpack');
const BundleTracker = require('webpack-bundle-tracker');
const config = require('./webpack.base.config.js');
var NoPathBundleTracker = function(options) {
BundleTracker.call(this, options);
};
// Edit webpack-bundle-tracker to not show path
NoPathBundleTracker.prototype = Object.create(BundleTracker.prototype);
NoPathBundleTracker.prototype.writeOutput = function (compiler, contents) {
var chunks = contents['chunks'];
if (chunks) {
for (var chunk in chunks ) {
var chunkArray = chunks[chunk];
var i;
for (i = 0; i < chunkArray.length; ++i) {
var chunkObject = chunkArray[i];
for ( var chunkinfo in chunkObject ) {
chunkObject['path'] = 'no path';
}
}
}
}
BundleTracker.prototype.writeOutput.call(this, compiler, contents);
};
config.output.path = path.resolve('./bundles/prod');
config.plugins = config.plugins.concat([
new NoPathBundleTracker({
filename: './webpack-stats-prod.json'
}),
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('production')
}}),
]);
module.exports = config;