├── .gitignore ├── package.json ├── README.md └── index.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "coffee-loader", 3 | "version": "0.7.2", 4 | "author": "Tobias Koppers @sokra", 5 | "description": "coffee loader module for webpack", 6 | "dependencies": { 7 | "loader-utils": "0.2.x" 8 | }, 9 | "peerDependencies": { 10 | "coffee-script": "1.x" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git@github.com:webpack/coffee-loader.git" 15 | }, 16 | "licenses": [ 17 | { 18 | "type": "MIT", 19 | "url": "http://www.opensource.org/licenses/mit-license.php" 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # coffee-script loader for webpack 2 | 3 | ## Usage 4 | 5 | ``` javascript 6 | var exportsOfFile = require("coffee!./file.coffee"); 7 | // => return exports of executed and compiled file.coffee 8 | 9 | var exportsOfFile2 = require("coffee?literate!./file.litcoffee"); 10 | // can also compile literate files. 11 | ``` 12 | 13 | [Documentation: Using loaders](http://webpack.github.io/docs/using-loaders.html) 14 | 15 | ### Recommended configuration 16 | 17 | ``` javascript 18 | { 19 | module: { 20 | loaders: [ 21 | { test: /\.coffee$/, loader: "coffee-loader" }, 22 | { test: /\.(coffee\.md|litcoffee)$/, loader: "coffee-loader?literate" } 23 | ] 24 | } 25 | } 26 | ``` 27 | 28 | ## License 29 | 30 | MIT (http://www.opensource.org/licenses/mit-license.php) 31 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /* 2 | MIT License http://www.opensource.org/licenses/mit-license.php 3 | Author Tobias Koppers @sokra 4 | */ 5 | var coffee = require("coffee-script"); 6 | var loaderUtils = require("loader-utils"); 7 | module.exports = function(source) { 8 | this.cacheable && this.cacheable(); 9 | var coffeeRequest = loaderUtils.getRemainingRequest(this); 10 | var jsRequest = loaderUtils.getCurrentRequest(this); 11 | var query = loaderUtils.parseQuery(this.query); 12 | var result; 13 | try { 14 | result = coffee.compile(source, { 15 | literate: query.literate, 16 | filename: coffeeRequest, 17 | debug: this.debug, 18 | bare: true, 19 | sourceMap: true, 20 | sourceRoot: "", 21 | sourceFiles: [coffeeRequest], 22 | generatedFile: jsRequest 23 | }); 24 | } catch (e) { 25 | var err = ""; 26 | if (e.location == null || e.location.first_column == null || e.location.first_line == null) { 27 | err += "Got an unexpected exception from the coffee-script compiler. The original exception was: " + e + "\n"; 28 | err += "(The coffee-script compiler should not raise *unexpected* exceptions. You can file this error as an issue of the coffee-script compiler: https://github.com/jashkenas/coffee-script/issues)\n"; 29 | } else { 30 | var codeLine = source.split("\n")[e.location.first_line]; 31 | var offendingCharacter = (e.location.first_column < codeLine.length) ? codeLine[e.location.first_column] : ""; 32 | err += e + "\n"; 33 | // log erroneous line and highlight offending character 34 | err += " L" + e.location.first_line + ": " + codeLine.substring(0, e.location.first_column) + offendingCharacter + codeLine.substring(e.location.first_column + 1) + "\n"; 35 | err += " " + (new Array(e.location.first_column + 1).join(" ")) + "^\n"; 36 | } 37 | throw new Error(err); 38 | } 39 | result.js = 'var _require = __webpack_require__\n\n __webpack_require__ = function(mid){\n var module = _require(mid)\n\n return (module && module.__esModule && module.default) ? module.default : module\n }\n' + result.js 40 | var map = JSON.parse(result.v3SourceMap); 41 | map.sourcesContent = [source]; 42 | this.callback(null, result.js, map); 43 | } 44 | --------------------------------------------------------------------------------