Need help with coffee-loader?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

webpack-contrib
135 Stars 52 Forks MIT License 70 Commits 1 Opened issues

Description

CoffeeScript Loader

Services available

!
?

Need anything else?

Contributors list

# 41
JavaScr...
Webpack
TypeScr...
amd
16 commits
# 2,941
Webpack
webpack...
uglify
Markdow...
10 commits
# 3,849
ecmascr...
Webpack
hot-rel...
faceboo...
10 commits
# 17,843
Webpack
coffees...
seed
angular...
8 commits
# 36,202
webpack...
coffees...
Webpack
webpack...
3 commits
# 6,693
coffees...
Webpack
html-we...
Babel
3 commits
# 13,940
cakephp
coffees...
clean-c...
mvc-fra...
2 commits
# 89,876
webpack...
coffees...
reactjs
Webpack
1 commit
# 627,969
coffees...
webpack...
JavaScr...
Shell
1 commit
# 417,147
boot
coffees...
HTML
Shell
1 commit
# 6,707
Arch Li...
Ruby
test-fr...
webpack...
1 commit
# 7,480
coffees...
Django
Less
stringi...
1 commit
# 30,471
abap
coffees...
git-cli...
React
1 commit
# 19,802
coffees...
React
Bootstr...
Twitch
1 commit
# 259,866
coffees...
Shell
Go
google-...
1 commit
# 539,729
coffees...
TypeScr...
Shell
tests
1 commit
# 11,030
coffees...
bdd
node
test-fr...
1 commit
# 22,094
Electro...
sublime...
solidit...
scaffol...
1 commit
# 6,396
Webpack
Svelte
html5
ecmascr...
1 commit

npm node deps tests coverage chat size

coffee-loader

Compile CoffeeScript to JavaScript.

Getting Started

To begin, you'll need to install

coffeescript
and
coffee-loader
:
npm install --save-dev coffeescript coffee-loader

Then add the plugin to your

webpack
config. For example:

file.coffee

# Assignment:
number   = 42
opposite = true

Conditions:

number = -42 if opposite

Functions:

square = (x) -> x * x

Arrays:

list = [1, 2, 3, 4, 5]

Objects:

math = root: Math.sqrt square: square cube: (x) -> x * square x

Splats:

race = (winner, runners...) -> print winner, runners

Existence:

alert "I knew it!" if elvis?

Array comprehensions:

cubes = (math.cube num for num in list)

webpack.config.js

module.exports = {
  module: {
    rules: [
      {
        test: /\.coffee$/,
        loader: "coffee-loader",
      },
    ],
  },
};

Alternative usage:

import coffee from "coffee-loader!./file.coffee";

And run

webpack
via your preferred method.

Options

Type:

Object
Default:
{ bare: true }

Options for CoffeeScript. All possible options you can find here.

Documentation for the

transpile
option you can find here.

ℹ️ The

sourceMap
option takes a value from the
compiler.devtool
value by default.

ℹ️ The

filename
option takes a value from webpack loader API. The option value will be ignored.

webpack.config.js

module.exports = {
  module: {
    rules: [
      {
        test: /\.coffee$/,
        loader: "coffee-loader",
        options: {
          bare: false,
          transpile: {
            presets: ["@babel/env"],
          },
        },
      },
    ],
  },
};

Examples

CoffeeScript and Babel

From CoffeeScript 2 documentation:

CoffeeScript 2 generates JavaScript that uses the latest, modern syntax. The runtime or browsers where you want your code to run might not support all of that syntax. In that case, we want to convert modern JavaScript into older JavaScript that will run in older versions of Node or older browsers; for example,

{ a } = obj
into
a = obj.a
. This is done via transpilers like Babel, Bublé or Traceur Compiler.

You'll need to install

@babel/core
and
@babel/preset-env
and then create a configuration file:
npm install --save-dev @babel/core @babel/preset-env
echo '{ "presets": ["@babel/env"] }' > .babelrc

webpack.config.js

module.exports = {
  module: {
    rules: [
      {
        test: /\.coffee$/,
        loader: "coffee-loader",
        options: {
          transpile: {
            presets: ["@babel/env"],
          },
        },
      },
    ],
  },
};

Literate CoffeeScript

For using Literate CoffeeScript you should setup:

webpack.config.js

module.exports = {
  module: {
    rules: [
      {
        test: /\.coffee$/,
        loader: "coffee-loader",
        options: {
          literate: true,
        },
      },
    ],
  },
};

Contributing

Please take a moment to read our contributing guidelines if you haven't yet done so.

CONTRIBUTING

License

MIT

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.