kevva / kevva/decompress

Tapable.plugin is deprecated. Use new API on `.hooks` instead

Open
#83 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
419
Forks
55
PR merge metrics
No merged PRs in 30d

Description

I am trying to upgrade my Webpack 4 to Webpack5. (Earlier it was Webpack2)

On running node --trace-deprecation node_modules/webpack/bin/webpack.js
I get

**(node:30954) DeprecationWarning: Tapable.plugin is deprecated. Use new API on `.hooks` instead
at DecompressPlugin.apply (/Users/adityashukla/projects/userInterface/source-catalog-web/plugins/DecompressPlugin.js:16:18)
at webpack (/Users/adityashukla/projects/userInterface/source-catalog-web/node_modules/webpack/lib/webpack.js:51:13)
**

My Plugin looks like this

```
const path = require('path'),
const path = require('path'),
decompress = require('decompress'),
crypto = require('crypto'),
glob = require('glob');

class DecompressPlugin {
constructor(dist) {
if (!dist) {
throw new Error('dist is a required option');
}

this.dist = dist;
}

apply(compiler) {
compiler.plugin('emit', (compilation, done) => {
const files = glob.sync('**/*.decompress.tar.bz2', {'cwd': 'src'}),
hash = crypto.createHash('sha256').update(JSON.stringify(files.sort()), 'utf8').digest('hex');

if (this.hash !== hash) {
this.hash = hash;

files.forEach((f) => {
const folder = path.dirname(f).split(path.sep),
parts = [this.dist].concat(folder.slice(1)),
destination = parts.join(path.sep);

decompress(path.join('src', f), destination).then(() => {
done();
});
});
} else {
done();
}
});
}
}

module.exports = DecompressPlugin;
```
How can i resolve this ?

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the reported DecompressPlugin.js line 16 and the apply method shown in the issue. Compare its compiler.plugin('emit', ...) usage with the Webpack 5 hooks API and verify how the decompress callback completes. Done means the plugin extracts the listed archives without the Tapable deprecation warning.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, nodejs
Domain
build-system
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.