Svelte3에서 Typerscript, Pug, Sass 사용 가능 설정
아래의 방법을 사용할 수 있다.
Svelte3 소개
웹 프런트엔드 개발을 위한 프레임워크입니다.
응용 프로그램은 Vue SFC 와 비슷한 태그, 스크립트, 스타일 패키지가 한 파일에 있는 Svelte 구성 요소로 구현됩니다.
라이브러리가 아닌 전송기로 작동하며 제작 후 브라우저에서 실행할 수 있는 JavaScierpt와 CSS를 출력합니다.
따라서 운행 시간 라이브러리에 명확하게 편입할 필요가 없다.코드에 없어도
import
컴파일할 때 필요한 코드를 삽입합니다.또한 표준 웹 Components를 구축할 수도 있습니다.
공식 홈페이지는 여기->Svelte • Cybernetically enhanced web apps
프로젝트 초기화
Svelte 공식 템플릿 창고sveltejs/template를 사용하여degit[1]로 프로젝트를 제작하는 모델입니다.
다음 명령을 실행하면 됩니다.
$ npx degit sveltejs/template <プロジェクト名>
$ cd <プロジェクト名>
$ yarn install
다음 파일 그룹을 생성합니다.파일 트리 보기
❯ tree -I node_modules
.
├── README.md
├── package.json
├── public
│ ├── favicon.png
│ ├── global.css
│ └── index.html
├── rollup.config.js
├── scripts
│ └── setupTypeScript.js
├── src
│ ├── App.svelte
│ └── main.js
└── yarn.lock
동작 확인
다음 명령을 사용하여 개발용 서버를 시작합니다.
$ yarn dev
시작 후 방문http://localhost:5000.다음 페이지만 보이면 OK.Type script 사용
기본값은 JavaScript로 구현되지만 TypeScript로 구현되는 방식으로 설정된 스크립트가 준비되어 있습니다.
를 실행하면 src 디렉토리의 JavaScript를 TypeScript로 덮어씁니다.
$ node scripts/setupTypeScript.js
$ yarn install
실행 후 파일 보기rollup.config.이외의서류는?TS로 변환하고 App으로 변환합니다.svelte 내에서도 Type Script로 덮어씁니다.
❯ tree -I node_modules
.
├── README.md
├── package.json
├── public
│ ├── build
│ │ ├── bundle.css
│ │ ├── bundle.js
│ │ └── bundle.js.map
│ ├── favicon.png
│ ├── global.css
│ └── index.html
├── rollup.config.js
├── src
│ ├── App.svelte
│ └── main.ts
├── tsconfig.json
└── yarn.lock
yarn dev
에서 개발용 서버를 시작하고 http://localhost:5000에 접근할 수 있다면 OK.표시되는 내용은 TypeScript가 활성화되기 전과 다릅니다.Pug 및 Sass 가져오기
TypeScript를 사용하면 svelte-preprocess가 devDependencies에 추가됩니다.
Pug과 Sass가 쓴 코드의 변환을 지원하기 때문에 설정 없이 가져올 수 있는 것은 거의 없다.
Pug
Pug는 루비Slim와 유사한 문법으로 HTML을 설명할 수 있는 템플릿 엔진이다.
다음 명령을 사용하여 Pug를 설치합니다.
yarn add -D pug
src/App.svelte를 열면 다음과 같은 HTML 부분이 있습니다.src/App.svelte
<main>
<h1>Hello {name}!</h1>
<p>Visit the <a href="https://svelte.dev/tutorial">Svelte tutorial</a> to learn how to build Svelte apps.</p>
</main>
Pug로 이것을 아래의 모양으로 고쳐 쓰세요.src/App.svelte
<template lang='pug'>
main
h1 Hello {name}!
p
| Visit the
a(href="https://svelte.dev/tutorial") Svelte tutorial
| to learn how to build Svelte apps.
</template>
개발 서버를 시작하고 표시할 수만 있다면 OK.Sass
Sass도 Pug과 같습니다.모듈만 추가하면 사용할 수 있습니다.
$ yarn add -D sass
src/App.svelte를 열고 다음 방식으로 <style>
부분을 다시 씁니다.src/App.svelte
<style lang='sass'>
main
text-align: center
padding: 1em
max-width: 240px
margin: 0 auto
h1
color: #ff3e00
text-transform: uppercase
font-size: 4em
font-weight: 100
@media (min-width: 640px)
main
max-width: none
</style>
개발 서버를 시작하고 표시할 수만 있다면 OK.Jest의 가져오기
필요한 모듈을 먼저 설치합니다.
$ yarn add -D jest ts-jest ts-node @types/jest @testing-library/svelte svelte-jester @testing-library/jest-dom
Jest의 설정 파일을 만듭니다.최소한 이런 느낌.jest.config.ts
export default {
clearMocks: true,
coverageDirectory: 'coverage',
moduleFileExtensions: ['js', 'ts', 'svelte'],
testEnvironment: 'jsdom',
transform: {
'^.+\\.svelte$': ['svelte-jester', { preprocess: true }],
'^.+\\.ts$': 'ts-jest',
'^.+\\.js$': 'babel-jest',
},
};
rollup.config.js에서 같은 설정이 있지만 Jest에서 rollup을 사용하지 않기 때문에 Svelte 설정 파일을 추가합니다.svelte.config.js
const sveltePreprocess = require("svelte-preprocess");
module.exports = {
preprocess: sveltePreprocess({ sourceMap: true }),
};
테스트 코드에 사용되는 함수 등의 형식 정의를 읽기 위해 tsconfig입니다.json에 설정을 추가합니다.tsconfig.json
{
"extends": "@tsconfig/svelte/tsconfig.json",
"include": ["src/**/*"],
"exclude": ["node_modules/*", "__sapper__/*", "public/*"],
"compilerOptions": { // <= 追加
"types": ["svelte", "jest", "node"], // <= 追加
} // <= 追加
}
그리고 앱.svelte 코드를 테스트하는 것은 이런 느낌입니다.__test__/App.test.ts
import { render } from '@testing-library/svelte';
import App from '../src/App.svelte';
test('should render', () => {
const results = render(App, { props: { name: 'world' } });
expect(() => results.getByText('Hello world!')).not.toThrow();
});
실행하기 편리하도록.json의scripts
에 추가test
.package.json
{
// 〜 略 〜
"scripts": {
"build": "rollup -c",
"dev": "rollup -c -w",
"start": "sirv public",
"validate": "svelte-check",
"test": "jest" // <== 追加
},
// 〜 略 〜
}
그리고 yarn test
에서 잘못된 집행이 없으면 OK.ESlint 가져오기
Svelte3에서 ESLiteslint-plugin-svelte3[2]를 사용합니다.
다음 명령을 사용하여 가져옵니다.
$ yarn add -D eslint eslint-plugin-svelte3 eslint-plugin-jest
$ ./node_modules/.bin/eslint --init
✔ How would you like to use ESLint? · style
✔ What type of modules does your project use? · esm
✔ Which framework does your project use? · none
✔ Does your project use TypeScript? · No / Yes
✔ Where does your code run? · browser, node
✔ How would you like to define a style for your project? · guide
✔ Which style guide do you want to follow? · airbnb
✔ What format do you want your config file to be in? · JavaScript
Checking peerDependencies of eslint-config-airbnb-base@latest
The config that you've selected requires the following dependencies:
@typescript-eslint/eslint-plugin@latest eslint-config-airbnb-base@latest eslint@^5.16.0 || ^6.8.0 || ^7.2.0 eslint-plugin-import@^2.22.1 @typescript-eslint/parser@latest
✔ Would you like to install them now with npm? · No / Yes
# 〜 略 〜
Successfully created .eslintrc.yml file in /Users/hero/Develop/javascript/svelte3-ts-pug-sass-template
$ yarn install
$ rm package-lock.json
위 작업을 수행한 후eslintrc.js를 완성했지만 Svelte3은 필요한 설정을 포함하지 않기 때문에 추가합니다.추가된 것은 다음과 같다.
svelte
와 주석의 부분은 Svelte3의 설정입니다.jest
의 주석은 Jest
의 설정이다..eslintrc.js
module.exports = {
env: {
browser: true,
es2021: true,
node: true,
'jest/globals': true, // <== svelte
},
extends: [
'airbnb-base',
],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 12,
sourceType: 'module',
},
plugins: [
'svelte3', //<== svelte
'@typescript-eslint',
'jest', // <== jest
],
overrides: [ // <== svelte
{ // <== svelte
files: ['*.svelte'], // <== svelte
processor: 'svelte3/svelte3', // <== svelte
}, // <== svelte
], // <== svelte
ignorePatterns: [
'public/build/*',
],
settings: { // <== svelte
'svelte3/typescript': require('typescript'), // eslint-disable-line global-require
'svelte3/ignore-styles': (attributes) => attributes.lang && attributes.lang === 'sass',
},
rules: { // これらは最小限必要と思う。その他ルールの追加はお好みで。
'import/no-extraneous-dependencies': ['error', { devDependencies: true }],
'import/no-mutable-exports': 'off',
'import/prefer-default-export': 'off',
},
};
나는 YAML 형식을 좋아하지만 settings
에서 함수를 설정해야 하고 자바스크립트 형식이 필요하다.그리고 아래와 같은 패키지.json Script를 추가하면 편리합니다.
package.json
"scripts": {
"eslint": "eslint --ext svelte,js,ts ./"
},
그리고 다음 명령에서 자동으로 수정할 수 있는 곳을 미리 수정한다.$ yarn elint --fix
자동 수정이 불가능한 곳은 손으로 수정한다.개발 환경
개발을 지원하는 주변 도구에는 이런 것이 있다.
REPL
웹 브라우저에서 쉽게 시도할 수 있습니다.기능을 살짝 시험해 보니 편리할 것 같다.
편집기 확장
VSCODE의 확장을 공식적으로 제공합니다.
브라우저 확장
지금은 공식적인 게 없는 것 같은데 몇 개 있어요.
Svelte Devtools
VueVue.js devtools의 확장을 지원합니다.
Svelte Sight
Svelte Devools와 유사한 응용 프로그램의 확장으로 여겨지지만 구성 요소의 등급을 도형적으로 표시할 수 있습니다.
참고 자료
최후
이 절차를 실행한 후의 상태를 다음 창고에 저장합니다.
HeRoMo/svelte3-ts-pug-sass-template: Svelte3 App template with Typescript, Pug, Sass, Jest and ESLint
각주
Giit 창고를 로컬로 복제하는 명령줄 도구입니다.https://github.com/Rich-Harris/degit ↩︎
v3.1.0에는 Type Script에 해당하는 Svelte 모듈도 있습니다.↩︎
Reference
이 문제에 관하여(Svelte3에서 Typerscript, Pug, Sass 사용 가능 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/hero/articles/svelte3-ts-pug-sass텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)