index.js
foo.js
index.js
进口 foo.js
webpack.config.js
HelloWorldPlugin
// ./src/foo.js
export default {
foo: 'foo'
}
// ./src/index.js
import foo from './foo'
console.log(foo);
// webpack.config.js
const path = require('path');
var HelloWorldPlugin = require('./hello-world-plugin');
module.exports = {
entry: './src/index.js',
plugins: [
new HelloWorldPlugin({ options: true })
]
};
// HelloWorldPlugin.js
class HelloWorldPlugin {
apply(compiler) {
compiler.hooks.afterEmit.tapAsync("HelloWorldPlugin", (compilation, next) => {
console.log(arguments);
// let foo = the module as imported from ./src/foo.js i.e. {foo: 'foo'}
next();
});
}
}
module.exports = HelloWorldPlugin;
是否可以从{foo:'foo'}
内部的foo-module
访问HelloWorldPlugin
?
答案 0 :(得分:0)
如果您试图在插件中获取源代码,则可以从compilation.assets[fileName].source()
获取它,并且可以这样做:
class HelloWorldPlugin {
apply(compiler) {
compiler.hooks.afterEmit.tapAsync("HelloWorldPlugin", (compilation, next) => {
console.log(arguments);
compilation.hooks.afterOptimizeAssets.tap({ name: 'name' }, (modules) => {
for (let fileName in modules) {
const source = compilation.assets[fileName].source();
console.log(source); // source of files
}
})
next();
});
}
}
通过链接到compilation
hooks中的一个,您可以访问所有模块并获取文件名及其内容