mirror of https://github.com/webpack/webpack.git
follow the browser-module spec: ignoring export an empty module.
fixes #187
This commit is contained in:
parent
b88938ceea
commit
83eec78bf0
|
|
@ -6,6 +6,7 @@ var async = require("async");
|
|||
|
||||
var Tapable = require("tapable");
|
||||
var NormalModule = require("./NormalModule");
|
||||
var RawModule = require("./RawModule");
|
||||
var LoadersList = require("webpack-core/lib/LoadersList");
|
||||
|
||||
function NormalModuleFactory(context, resolvers, parser, options) {
|
||||
|
|
@ -55,7 +56,11 @@ NormalModuleFactory.prototype.create = function(context, dependency, callback) {
|
|||
var loaders = results[0];
|
||||
resource = results[1];
|
||||
|
||||
if(resource === false) return callback(); // ignored
|
||||
if(resource === false)
|
||||
return callback(null,
|
||||
new RawModule("/* (ignored) */",
|
||||
"ignored " + context + " " + request,
|
||||
request + " (ignored)")); // ignored
|
||||
|
||||
var userRequest = loaders.concat([resource]).join("!");
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||
Author Tobias Koppers @sokra
|
||||
*/
|
||||
var Module = require("./Module");
|
||||
var OriginalSource = require("webpack-core/lib/OriginalSource");
|
||||
var RawSource = require("webpack-core/lib/RawSource");
|
||||
|
||||
function RawModule(source, identifier, readableIdentifier) {
|
||||
Module.call(this);
|
||||
this.sourceStr = source;
|
||||
this.identifierStr = identifier || this.sourceStr;
|
||||
this.readableIdentifierStr = readableIdentifier || this.identifierStr;
|
||||
this.cacheable = true;
|
||||
this.built = false;
|
||||
}
|
||||
module.exports = RawModule;
|
||||
|
||||
RawModule.prototype = Object.create(Module.prototype);
|
||||
|
||||
RawModule.prototype.identifier = function() {
|
||||
return this.identifierStr;
|
||||
};
|
||||
|
||||
RawModule.prototype.readableIdentifier = function(requestShortener) {
|
||||
return requestShortener.shorten(this.readableIdentifierStr);
|
||||
};
|
||||
|
||||
RawModule.prototype.needRebuild = function(fileTimestamps, contextTimestamps) {
|
||||
return false;
|
||||
};
|
||||
|
||||
RawModule.prototype.build = function(options, compilation, resolver, fs, callback) {
|
||||
this.builtTime = new Date().getTime();
|
||||
callback();
|
||||
};
|
||||
|
||||
RawModule.prototype.source = function(dependencyTemplates, outputOptions, requestShortener) {
|
||||
if(this.useSourceMap)
|
||||
return new OriginalSource(this.sourceStr, this.identifier());
|
||||
else
|
||||
return new RawSource(this.sourceStr);
|
||||
};
|
||||
|
||||
RawModule.prototype.size = function() {
|
||||
return this.sourceStr.length;
|
||||
};
|
||||
|
||||
RawModule.prototype.getSourceHash = function() {
|
||||
var hash = require("crypto").createHash("md5");
|
||||
hash.update(this.sourceStr);
|
||||
return hash.digest("hex");
|
||||
};
|
||||
|
||||
RawModule.prototype.getAllModuleDependencies = function() {
|
||||
return [];
|
||||
};
|
||||
|
||||
RawModule.prototype.createTemplate = function() {
|
||||
return new RawModule(this.sourceStr, "template of " + this.id);
|
||||
};
|
||||
|
||||
RawModule.prototype.getTemplateArguments = function() {
|
||||
return [];
|
||||
};
|
||||
|
|
@ -28,6 +28,12 @@ it("should ignore recursive module mappings", function() {
|
|||
require("recursive-module").should.be.eql("new-module");
|
||||
});
|
||||
|
||||
it("should use empty modules for ignored modules", function() {
|
||||
require("ignoring-module").module.should.be.eql({});
|
||||
require("ignoring-module").file.should.be.eql({});
|
||||
require("ignoring-module").module.should.not.be.equal(require("ignoring-module").file);
|
||||
});
|
||||
|
||||
// Errors
|
||||
require.include("recursive-file/a");
|
||||
require.include("recursive-file/b");
|
||||
|
|
|
|||
1
test/cases/resolving/browser-field/node_modules/ignoring-module/file.js
generated
vendored
Normal file
1
test/cases/resolving/browser-field/node_modules/ignoring-module/file.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
throw new Error("Fail");
|
||||
2
test/cases/resolving/browser-field/node_modules/ignoring-module/index.js
generated
vendored
Normal file
2
test/cases/resolving/browser-field/node_modules/ignoring-module/index.js
generated
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
exports.module = require("wrong-module");
|
||||
exports.file = require("./file");
|
||||
6
test/cases/resolving/browser-field/node_modules/ignoring-module/package.json
generated
vendored
Normal file
6
test/cases/resolving/browser-field/node_modules/ignoring-module/package.json
generated
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"browser": {
|
||||
"wrong-module": false,
|
||||
"./file.js": false
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue