index.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. const path = require("path");
  2. module.exports = (API, projectOptions) => {
  3. API.chainWebpack((config) => {
  4. config.resolveLoader.modules.prepend(path.join(__dirname, "node_modules"));
  5. config.resolve.extensions.prepend(".coffee");
  6. const coffeeRule = config.module.rule("coffee").test(/\.coffee$/);
  7. coffeeRule.use("cache-loader").loader(require.resolve("cache-loader"));
  8. if (process.env.NODE_ENV === "production" && !!projectOptions.parallel) {
  9. coffeeRule
  10. .use("thread-loader")
  11. .loader(require.resolve("thread-loader"))
  12. .options(
  13. typeof projectOptions.parallel === "number" ? { workers: projectOptions.parallel } : {},
  14. );
  15. }
  16. if (API.hasPlugin("babel")) {
  17. coffeeRule
  18. .use("babel-loader")
  19. .loader(require.resolve("babel-loader"))
  20. .options({
  21. presets: ["@babel/preset-env"],
  22. });
  23. }
  24. coffeeRule.use("coffee-loader").loader(require.resolve("coffee-loader"));
  25. coffeeRule.exclude.add(() => ["node_modules", "bower_components"]).end();
  26. });
  27. };