首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当Svelte配置包括svelte-预处理时,Jest挂起

当Svelte配置包括svelte-预处理时,Jest挂起
EN

Stack Overflow用户
提问于 2020-07-25 18:20:23
回答 1查看 252关注 0票数 0

该雪包Svelte模板包括一个Jest设置,这是很好的Svelte应用程序和工作的方框。但是,一旦添加了svelte-preprocessJest就会无限期地挂起

使用https://github.com/agneym/svelte-tailwind-snowpack可以很容易地看到这一点,可以使用以下方法进行设置:

npx create-snowpack-app dir-name --template svelte-tailwind-snowpack

svelte.config.js看起来是这样的,尽管预处理器不包括尾风,但它仍然挂起:

代码语言:javascript
复制
const sveltePreprocess = require("svelte-preprocess");

const preprocess = sveltePreprocess({
  postcss: {
    plugins: [require("tailwindcss"), require("autoprefixer")],
  },
});

module.exports = {
  preprocess,
};

jest.config.js

代码语言:javascript
复制
const fs = require("fs");
const path = require("path");

// Use this instead of `paths.testsSetup` to avoid putting
// an absolute filename into configuration after ejecting.
// const setupTestsFile = fs.existsSync(paths.testsSetup)
//   ? `<rootDir>/src/setupTests.js`
//   : undefined;
const setupTestsFile = true;

module.exports = function () {

  const userSvelteConfig = getUserSvelteConfig();

  return {
    testMatch: [
      "<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}",
      "<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}",
    ],
    transform: {
      "^.+\\.svelte$": [
        "jest-transform-svelte",
        { preprocess: userSvelteConfig.preprocess },
      ],
      "^.+\\.(js|ts)$": path.resolve(__dirname, "jest/babelTransform.js"),
    },
    moduleFileExtensions: ["js", "ts", "svelte"],
    testPathIgnorePatterns: ["node_modules"],
    transformIgnorePatterns: ["node_modules"],
    bail: false,
    verbose: true,
    setupFilesAfterEnv: setupTestsFile ? ["<rootDir>/jest.setup.js"] : [],
  };
};

function getUserSvelteConfig() {
  const userSvelteConfigLoc = path.join(process.cwd(), "svelte.config.js");
  if (fs.existsSync(userSvelteConfigLoc)) {
    return require(userSvelteConfigLoc);
  }

  return {};
}
EN

回答 1

Stack Overflow用户

发布于 2020-07-25 23:38:42

必须弹出默认的斯诺包配置文件,并使用svelte-jester而不是他们正在使用的配置。下面的配置工作如下:

代码语言:javascript
复制
const fs = require("fs");
const path = require("path");

// Use this instead of `paths.testsSetup` to avoid putting
// an absolute filename into configuration after ejecting.
// const setupTestsFile = fs.existsSync(paths.testsSetup)
//   ? `<rootDir>/src/setupTests.js`
//   : undefined;
const setupTestsFile = true;

module.exports = function () {

  const userSvelteConfig = getUserSvelteConfig();

  return {
    rootDir: "./",
    testMatch: [
      "<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}",
      "<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}",
    ],
    transform: {
      "^.+\\.svelte$": [
        "svelte-jester",
        { "preprocess": true },
      ],
      "^.+\\.(js|ts)$": "babel-jest",
    },
    moduleFileExtensions: ["js", "ts", "svelte"],
    testPathIgnorePatterns: ["node_modules"],
    transformIgnorePatterns: ["node_modules"],
    bail: false,
    verbose: true,
    setupFilesAfterEnv: setupTestsFile ? ["<rootDir>/jest.setup.js"] : [],
  };
};

function getUserSvelteConfig() {
  const userSvelteConfigLoc = path.join(process.cwd(), "svelte.config.js");
  if (fs.existsSync(userSvelteConfigLoc)) {
    return require(userSvelteConfigLoc);
  }

  return {};
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63091947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档