diff --git a/README.md b/README.md index c5df71ac1..78d671a7d 100644 --- a/README.md +++ b/README.md @@ -198,10 +198,14 @@ The following loaders are included in webpack: * `coffee` (default at `.coffee`): Loads coffee-script like javascript * `css`: Loads css file with resolved imports and returns css code * `less`: Loads and compiles a less file and returns css code +* `val`: Excutes code as module and consider exports as javascript code +* `bundle`: Wraps request in a `require.ensure` block * `style`: Adds result of javascript execution to DOM -* (`.css` defaults to `style!css` loader, so all css rules are added to DOM) -* (`.less` defaults to `style!less` loader, so all less rules are added to DOM) * `script`: Executes a javascript file once in global context (like in script tag), requires are not parsed. Use this to include a library. ex. `require("script!./jquery.min.js")`. This is synchron, so the `$` variable is available after require. +* (`.css` defaults to `style!css` loader, so all css rules are added to DOM) +* (`.less` defaults to `style!css!val!less` loader, so all less rules are added to DOM) + +See docs for loader in github repo of the loader. ## TL;DR diff --git a/lib/buildDeps.js b/lib/buildDeps.js index 12c9c0173..75062d8c8 100644 --- a/lib/buildDeps.js +++ b/lib/buildDeps.js @@ -134,7 +134,7 @@ function execLoaders(request, loaders, filenames, contents, options, callback) { } catch(e) { if(!done) { done = true; - callback("Loader throwed exeception: " + e); + callback("Loader throwed exeception: " + (e.stack ? e.stack : e)); } else { if(e.stack) console.error(e.stack); else console.error(e); diff --git a/lib/webpack.js b/lib/webpack.js index 7e6a20f56..8534347f1 100644 --- a/lib/webpack.js +++ b/lib/webpack.js @@ -134,7 +134,7 @@ function webpack(context, moduleName, options, finalCallback) { options.resolve.loaders.push({test: /\.json$/, loader: "json"}); options.resolve.loaders.push({test: /\.jade$/, loader: "jade"}); options.resolve.loaders.push({test: /\.css$/, loader: "style!css"}); - options.resolve.loaders.push({test: /\.less$/, loader: "style!less"}); + options.resolve.loaders.push({test: /\.less$/, loader: "style!css!val!less"}); options.events.emit("task", "create ouput directory"); options.events.emit("task", "prepare chunks"); diff --git a/lib/writeSource.js b/lib/writeSource.js index fdb76a00b..e06678233 100644 --- a/lib/writeSource.js +++ b/lib/writeSource.js @@ -181,7 +181,7 @@ module.exports = function(module, options, toRealId) { "// module.id = ", module.id, "\n", "// module.realId = ", module.realId, "\n", "// module.chunks = ", module.chunks.join(", "), "\n", - "//@ sourceURL=webpack-module://", encodeURI(module.filename).replace(/%5C|%2F/g, "/") + "//@ sourceURL=webpack-module://", encodeURI(module.filename || module.dirname).replace(/%5C|%2F/g, "/") ].join("")), ");"].join(""); } diff --git a/package.json b/package.json index 954ec1bef..4840a5ada 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "webpack", - "version": "0.3.12", + "version": "0.3.13", "author": "Tobias Koppers @sokra", "description": "Packs CommonJs Modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loading of js, json, jade, coffee, css, ... out of the box and more with custom loaders.", "dependencies": { @@ -15,7 +15,9 @@ "css-loader": "0.1.x", "less-loader": "0.1.x", "style-loader": "0.1.x", - "script-loader": "0.1.x" + "script-loader": "0.1.x", + "bundle-loader": "0.1.x", + "val-loader": "0.1.x" }, "licenses": [ { diff --git a/require-polyfill.js b/require-polyfill.js index 4ffc1d72a..78c3656c3 100644 --- a/require-polyfill.js +++ b/require-polyfill.js @@ -144,7 +144,8 @@ var options = module.exports.options = { {test: /\.coffee$/, loader: "coffee"}, // {test: /\.json$/, loader: "json"}, // This works out of the box in node.js {test: /\.jade$/, loader: "jade"}, - {test: /\.css$/, loader: "style!css"} + {test: /\.css$/, loader: "style!css"}, + {test: /\.less$/, loader: "style!css!val!less"} ], loaderExtensions: [".webpack-loader.js", ".loader.js", ".js", ""], loaderPostfixes: ["-webpack-loader", "-loader", ""] diff --git a/test/browsertest/css/generateCss.js b/test/browsertest/css/generateCss.js new file mode 100644 index 000000000..b148d1dd8 --- /dev/null +++ b/test/browsertest/css/generateCss.js @@ -0,0 +1,3 @@ +var fs = require("fs"); +var path = require("path"); +module.exports = fs.readFileSync(path.join(path.dirname(__filename), "stylesheet.css"), "utf-8") + "\n/* generated */"; diff --git a/test/browsertest/lib/index.web.js b/test/browsertest/lib/index.web.js index 562fb26d8..b4dfad2db 100644 --- a/test/browsertest/lib/index.web.js +++ b/test/browsertest/lib/index.web.js @@ -125,6 +125,9 @@ window.test(require("../resources/script.coffee") === "coffee test", "Buildin 'c window.test(require("css!../css/stylesheet.css").indexOf(".rule-direct") !== -1, "Buildin 'css' loader, direct content"); window.test(require("css!../css/stylesheet.css").indexOf(".rule-import1") !== -1, "Buildin 'css' loader, imported rule"); window.test(require("css!../css/stylesheet.css").indexOf(".rule-import2") !== -1, "Buildin 'css' loader, double imported rule"); +window.test(require("css!val!../css/generateCss").indexOf("generated") !== -1, "Buildin 'val' loader, combined with css"); +window.test(require("css!val!../css/generateCss").indexOf(".rule-import2") !== -1, "Buildin 'val' loader, combined with css, imported css"); +window.test(require("raw!val!../css/generateCss").indexOf("generated") !== -1, "Buildin 'val' loader, combined with raw"); window.test(require("less!../less/stylesheet.less").indexOf(".less-rule-direct") !== -1, "Buildin 'less' loader, direct content"); window.test(require("less!../less/stylesheet.less").indexOf(".less-rule-import1") !== -1, "Buildin 'less' loader, imported rule"); window.test(require("less!../less/stylesheet.less").indexOf(".less-rule-import2") !== -1, "Buildin 'less' loader, double imported rule"); @@ -138,7 +141,5 @@ window.test(require("../resources/" + scr) === "coffee test", "context should pr window.test(require("raw!../resources/" + abc + ".txt") === "abc", "raw loader with context"); -require.ensure([], function(require) { - // Tests from node.js - require("../nodetests"); -}); +// Tests from node.js +require("bundle!../nodetests");