index.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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. if (!projectOptions.pages) {
  7. config.entry("app").clear().add("./src/main.coffee");
  8. }
  9. const coffeeRule = config.module
  10. .rule("coffee")
  11. .exclude(/node_modules|bower_components/)
  12. .test(/\.coffee$/);
  13. coffeeRule.use("cache-loader").loader(require.resolve("cache-loader"));
  14. if (process.env.NODE_ENV === "production" && !!projectOptions.parallel) {
  15. coffeeRule
  16. .use("thread-loader")
  17. .loader(require.resolve("thread-loader"))
  18. .options(
  19. typeof projectOptions.parallel === "number" ? { workers: projectOptions.parallel } : {},
  20. );
  21. }
  22. if (api.hasPlugin("babel")) {
  23. coffeeRule
  24. .use("babel-loader")
  25. .loader(require.resolve("babel-loader"))
  26. .options({
  27. presets: ["@babel/preset-env"],
  28. });
  29. }
  30. coffeeRule.use("coffee-loader").loader(require.resolve("coffee-loader"));
  31. });
  32. };