javascript 如何在SvelteKit中设置SCSS导入的基本路径?

3j86kqsm  于 2022-12-25  发布在  Java
关注(0)|答案(1)|浏览(206)

我想在我的一个组件中导入一个scss文件。有没有一种方法可以使用别名或其他东西,这样我就可以导入它们而不需要很长的相对路径。
例如,而不是这样:第一个月
我想这样做:<style lang='scss'> @use '@/styles/main.scss' </style>
我使用的是sass的svelte预处理包。
这在Vue中有效,但不确定类似的事情是否可能在svelte中发生。

nuypyhwy

nuypyhwy1#

好吧,经过大量的谷歌搜索和实验,我想我已经想出了一个解决方案。
首先我切换到使用vitePreprocess处理器而不是svelte-preprocess,根据说明,svelte.config.js需要编辑为如下所示:

import adapter from '@sveltejs/adapter-auto';
import { vitePreprocess } from '@sveltejs/kit/vite';

/** @type {import('@sveltejs/kit').Config} */
const config = {
    kit: {
        adapter: adapter()
    },
    preprocess: [vitePreprocess()] // Add this line and its import (above)
};

export default config;

然后在vite.config.js中按如下方式编辑它:

import { sveltekit } from '@sveltejs/kit/vite'
import path from 'path'

/** @type {import('vite').UserConfig} */
const config = {
    plugins: [
        sveltekit()
    ],
    resolve: {
        alias: {
          '@': path.resolve('src') // Styles in src/styles will be accessible as '@/styles/whatever.scss'
        }
    }
}

export default config

这实现了我的目标,虽然热模块重载不能很好地工作。对scss文件的更改不会触发自动重载。可能有几个选项,但我喜欢下面的使用vite-plugin-restart模块来监视styles文件夹,并在其中一个文件更改时重新启动服务器。
第一:

npm install --save-dev vite-plugin-restart

然后进一步编辑vite.config.js,如下所示:

import { sveltekit } from '@sveltejs/kit/vite'
import VitePluginRestart from 'vite-plugin-restart'
import path from 'path'

// No idea why this is needed
// The default export of vite-plugin-restart looks to be the function but it doesn't work when imported
// Need to access the 'default' key from the imported object instead
const ViteRestart = VitePluginRestart.default

/** @type {import('vite').UserConfig} */
const config = {
    plugins: [
        sveltekit(),
        ViteRestart({
            restart: [
                'src/styles/*.scss' // For some reason path.resolve doesn't seem to work here
            ]
        })
    ],
    resolve: {
        alias: {
          '@': path.resolve('src')
        }
    }
}

export default config

每当您编辑其中一个scss文件时,vite服务器都会重新启动。

相关问题