Próbuję utworzyć wtyczkę do przeglądarki internetowej, która przeanalizuje kod dla określonej funkcji i zastąpi ją inną funkcją, ta wtyczka również narazi nową funkcję jako globalną.Wtyczka internetowa do zastąpienia funkcji inną wersją
class someName {
constructor(local, domain, translationFile, options) {
}
apply(compiler) {
// exposing ngt function as a global
compiler.plugin('make', function(compilation, callback) {
var childCompiler = compilation.createChildCompiler('someNameExpose');
childCompiler.apply(new webpack.DefinePlugin({
ngt: function(singular , plural, quantity) {
return quantity == 1 ? singular : plural;
}
}));
childCompiler.runAsChild(callback);
});
// searching for the getValue function
compiler.parser.plugin(`call getValue`, function someNameHandler(expr) {
// create a function to replace getValue with
let results = 'ngt('+ expr.arguments +')';
const dep = new ConstDependency(results, expr.range);
dep.loc = expr.loc;
this.state.current.addDependency(dep);
return true;
});
}
}
module.exports = someName;
aktualizacja/rephrase
Mam problem tutaj, kiedy compiler.parser.plugin('call getValue', function someNameHandler(expr) {...}
bloku skomentował funkcję ngt
występować jako globalny.
kiedy nie jest komentowany, pojawia się błąd, ngt jest niezdefiniowany.
skomentował to znaczy /**/
znalazłem obejście tego, ale daleko jej wtedy pojęcia. teraz, co robię, to eksportuję anonimową funkcję, która robi to, co chcę.
Widać wtyczki tutaj: Github
Hi, czy jest możliwe, aby zwrócić uwagę na następujące punkty? W jaki sposób znacznik "reactjs' jest trafny? Czy jest to pakiet internetowy 1 czy 2? (może być oczywiste dla eksperta, ale lepiej wyjaśnić) Czy mógłbyś powtórzyć dwa ostatnie zdania z dodatkowymi szczegółami? (przepraszam, mogę być ja, ale mam problem ze zrozumieniem, jaki jest problem) –
@Hugues Moreau nie ma bezpośredniego związku z reactjs, ale jest używany do reactjs, webpack 1. i zaktualizowałem pytanie o więcej szczegółów. –
dlaczego nie pisać/używać wtyczki babel do tego? jest o wiele łatwiejsze, a babel jest przecież transpilerem. – Bamieh