javascript 如何使AutoPrefixer在Sveltekit中工作?

yftpprvb  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(102)

我试图在我的Sveltekit项目中实现autoprefixer
我只使用CSS文件。它们几乎都位于src/css文件夹中,除了app.css位于src文件夹中。
我已经在我的svelte.config.js中添加了这个(并安装了依赖项):

// From https://www.reddit.com/r/sveltejs/comments/vggw7r/how_to_use_autoprefixer_and_scss_together_in/
import svelte_preprocess from 'svelte-preprocess'
import autoprefixer from 'autoprefixer'

/** @type {import('@sveltejs/kit').Config} */
const config = {
  preprocess: [
    svelte_preprocess({
      postcss: {
        plugins: [autoprefixer()],
      },
    }),
    vitePreprocess(),
  ],
/***

这是我的postcss.config.cjs的内容

module.exports = {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
    // Optimizing tailwind for production https://tailwindcss.com/docs/optimizing-for-production
    ...(process.env.NODE_ENV !== 'development' ? { cssnano: {} } : {})
  }
}

这是我期望的CSS文件前缀:

/* shake.css */

.shake {
  animation-name: shake;
  animation-timing-function: linear;
  animation-duration: 1750ms;
  animation-delay: 500ms;
  animation-iteration-count: 1;
}

@keyframes shake {
  0% {
    transform: translate(5px, 0);
  }
  50% {
    transform: translate(-5px, 0);
  }
  100% {
    transform: translate(0, 0);
  }
}

下面是一个我希望在结果中使用的前缀CSS的例子:

.shake {
  -moz-animation-name: shake;
}

@-moz-keyframes shake {
  0% {
    -moz-transform: translate(5px, 0);
  }
  50% {
    -moz-transform: translate(-5px, 0);
  }
  100% {
    -moz-transform: translate(0, 0);
  }
}

完整的Sveltekit +页面.svelte加载

<style>
.exemple {
  background: #000;
  color: white;
  width: 100px;
  height: 50px;
  padding : 10px;
  margin : 10px;
} 
</style>

<script>
import '$src/css/shake.css'
</script>

<div class="exemple shake"> Test </div>

我重新启动了服务器,Vite启动没有问题,但autoprefixer似乎不工作:我在这个简单的页面导入的CSS文件上没有看到供应商前缀。
我还从命令行运行了autoprefixer:它确实包含-webkit-前缀

  • 如何使autoprefixer工作与常规的css文件?
  • 它可以与苗条的组件内部CSS?
tkqqtvp1

tkqqtvp11#

我已经在我的SvelteKit项目中进行了如下设置,并且可以确认.css文件中的<style>块都正确地自动修复。

依赖

...
"@sveltejs/kit": "^1.5.0",
"autoprefixer": "^10.4.14",
"postcss": "^8.4.23",
"postcss-load-config": "^4.0.1",
"svelte": "^3.54.0",
"vite": "^4.0.0",
...

svelte.config.js

import adapter from '@sveltejs/adapter-node';
import preprocess from 'svelte-preprocess';

/** @type {import('@sveltejs/kit').Config} */
const config = {
    preprocess: [
        preprocess({
            postcss: true
        })
    ],
    kit: {
        adapter: adapter({ precompress: true })
    }
};

export default config;

postcss.config.js

import autoprefixer from 'autoprefixer';

/** @type {import('postcss-load-config').Config} */
const config = {
    plugins: [autoprefixer]
};

export default config;

相关问题