Skip to content

Instantly share code, notes, and snippets.

@aada
Forked from kisenka/inmemory-webpack-compiler.js
Created September 28, 2019 02:44
Show Gist options
  • Select an option

  • Save aada/7c6775844162dcc2425932a1dabc764e to your computer and use it in GitHub Desktop.

Select an option

Save aada/7c6775844162dcc2425932a1dabc764e to your computer and use it in GitHub Desktop.
Webpack in-memory filesystem
var webpack = require('webpack');
var MemoryFS = require('memory-fs');
var SingleEntryDependency = require('webpack/lib/dependencies/SingleEntryDependency');
var fs = new MemoryFS();
fs.mkdirpSync('/src');
fs.writeFileSync('/src/app.js', 'require("./dep.js")', 'utf-8');
fs.writeFileSync('/src/dep.js', 'module.exports = function(msg){console.log(msg)}', 'utf-8');
fs.writeFileSync('/src/extra-entry.js', 'require("./dep.js")', 'utf-8');
var compiler = webpack({
context: '/src',
entry: {app: './app.js'},
output: {
filename: '[name].js',
path: '/build'
}
});
compiler.inputFileSystem = fs;
compiler.outputFileSystem = fs;
compiler.resolvers.normal.fileSystem = fs;
compiler.resolvers.context.fileSystem = fs;
compiler.plugin('make', function(compilation, done) {
var dep = new SingleEntryDependency('./extra-entry.js');
dep.loc = 'extra-entry';
compilation.addEntry('/src', dep, 'extra-entry', done);
});
compiler.run(function(err, stats) {
if (err) throw err;
console.log(stats.compilation.assets['app.js'].source());
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment