2021년에 타자 스크립트 프로젝트 만들기
20065 단어 typescriptbeginners
TL;박사 01 명
코드 찾기here
토대
네가 시작하기 전에
npm init
가 실행되었습니다.그래서 너 하나 있어package.json
타자 스크립트 설정
타자 원고 자체
매우 단도직입적:
npm install typescript --save-dev
지금 이게 효과가 있는지 확인하기;파일 생성src/demo.ts
및export function greeter(person: string): string {
return "Hello, " + person + "!";
}
console.log(greeter("World"));
그리고 뛰고...기다리다뭘 뛰어야 돼요?그럼 JS, a node src/demo.ts
면 돼!...
아아...왜 그것은 예상치 못한 ":"을 불평합니까?
:-/
typescript 자체 구성
나는 tsc(typescript 컴파일러)에 추천하는 기본 설정을 사용하는 것을 좋아한다.
npm install --save-dev @tsconfig/recommended
그리고 tsconfig.json
라는 파일을 만들고 다음과 같은 내용으로 채운다.{
"extends": "@tsconfig/recommended/tsconfig.json",
"compilerOptions": {
"outDir": "./dist",
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}
너의 소포 안에 있다.json 구축을 위한 스크립트 추가: "build": "tsc",
너는 뛸 수 있을 거야npm run build
그리고node dist/demo.js
좋아요!속력을 내다
응, 나는 코드가 바뀔 때마다 반드시 두 개의 명령을 입력해야 하는 것을 좋아하지 않는 그런 사람이야.그래서 저희가 시간을 내서 자동화를 해보도록 하겠습니다.
프로젝트에 tsc watch를 먼저 추가합니다:
npm install tsc-watch --save-dev
그런 다음 패키지에 모니터링 스크립트를 추가합니다."watch": "tsc-watch --onSuccess \"node ./dist/demo.js\"",
현재 당신은 npm watch
를 실행할 수 있습니다. 당신이 한 모든 변경 사항은 즉시 준수되고 실행될 것입니다!"2 공간 또는 GTFO"법을 실행합니다!
포맷은 eslint와prettier를 사용하여 완성되며, 강제 포맷은husky와 미리 제출한 연결을 사용하여 완성됩니다
스타일 도구 구성
npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-config-prettier eslint-plugin-import prettier
.eslintrc.js
파일에서 다음을 수행합니다.module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
project: 'tsconfig.json',
sourceType: 'module',
},
plugins: ['@typescript-eslint/eslint-plugin'],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'prettier',
],
root: true,
env: {
node: true,
}
};
.eslintignore
:node_modules
dist
.prettierrc.js
:module.exports = {
trailingComma: "all",
tabWidth: 2,
singleQuote: true,
};
패키지에 lint
스크립트를 추가합니다.json:"lint": "eslint src --ext .js,.jsx,.ts,.tsx"
자동화
다시 한 번 말하지만, 나는 매우 게으르기 때문에, 나는 이 공구들이 자동으로 운행될 필요가 있다.여기가 하스키가 통신하는 곳이야!
npm install --save-dev husky pretty-quick
준비 스크립트 추가: "prepare": "husky install"
실행: npm run prepare
너는 마땅히 영화를 보러 가야 한다.지금은 헤스키 목록입니다.이 디렉토리에 파일 nammed
pre-commit
를 생성하고 다음 항목으로 채웁니다.#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install pretty-quick --staged
npm run lint
이제 커밋 시 형식이 수정됩니다.\o/'의미 있는 약속 또는 GTFO'법률 집행!
이것은 제출lint을 통해 완성됩니다
npm install --save-dev @commitlint/config-conventional @commitlint/cli
그런 다음 에 commit-msg
파일을 생성합니다.husky 디렉토리는 다음과 같습니다.#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install commitlint --edit "$1"
또 하나commitlint.config.js
, 안에module.exports = {extends: ['@commitlint/config-conventional']}
가 있다.지금 당신의 약속 정보는 강제로 법률을 준수하는 것입니다!
너의 친구가 법을 어기는 것을 방지하다
하스키가 처리해줄게:)
이거는 네가 원하는 테스트가 아니야.
설립하다
나는jest를 사용하기 때문에 우리는 먼저 그것을 설치해야 한다:
npm install -D jest ts-jest @types/jest
다음 구성jest.config.js
:module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
};
테스트 스크립트 추가: "test": "jest"
너의 첫 번째 테스트
demo.spec.ts
에서 우리는 우리의 영빈원이 매우 예의 바르다는 것을 확보할 것이다.import {greeter} from './demo'
describe('greeter function', () => {
test('a greet should start with Hello', () => {
expect(greeter("Bob").startsWith('Hello')).toBe(true)
});
});
해봐npm run test
어떻게 된 일인지 알아맞혀 봐...?자동화
이번에는 외부 DEP도, 수동 조정도 없었다!jest가 우리를 도와 이 문제를 해결했다.달리기만 하면
jest --watch
!테스트는 원본 코드 편집에서 실행되어야 합니다.또는, 이 점을 실현하기 위해 id에서 확장을 사용할 수 있습니다.개발 환경 설정
나는 vscode를 사용하기 때문에 이 절에서 토론할 내용이다.
확장성
편집기에서prettier를 포맷 프로그램으로 직접 사용하면 제출할 때가 아니라 코드를 바로 포맷할 수 있습니다.
석방 시간 다 됐어요?
자, 당신의 환영자는 지금 첫 번째 버전을 발표할 준비가 되어 있습니다!엄격한 제출 메시지 정책을 이용하여 좋은 변경 로그를 만듭시다.표준 버전은 우리가 이 점을 할 수 있도록 도와줄 것이다
npm i --save-dev standard-version
및 제작 스크립트: "release": "standard-version"
마지막으로 뛰기npm run release -- --first-release
네 거 해...최초 발표!자동화, 누버!
github 조작을 사용합니다. 왜냐하면 이 조작들은 매우 간결하기 때문입니다.이 동작을 설정하기 위해
.github/workflows/
디렉터리를 만듭니다.제출 시 자동 테스트
이 작업 흐름은 노드 의존항을 깨끗하게 설치하고 원본 코드를 생성하며 서로 다른 버전의 노드에서 테스트를 실행합니다
For more information
node.js.yml
:
name: Node.js CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x, 14.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm run build --if-present
- run: npm test
게시 시 자동 게시
npmPublish.yml
:name: Publish package on npm
on:
release:
types: [created]
jobs:
publish-npm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: 12
registry-url: https://registry.npmjs.org/
- name: Cache node modules
uses: actions/cache@v1
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- run: npm ci
- run: |
if [ ${{ github.event.release.action }} = "prereleased" ]; then
npm publish --tag beta
else
npm publish
fi
env:
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
NPM_TOKEN
는 메모리 라이브러리의 비밀로 npm가 수여한 발표 권한이 있는 방문 영패를 가지고 있다.개인 정보를 보려면 https://www.npmjs.com/settings/{YOUR_USER}/tokens로 전화하십시오.재미있는 물건
하하, 너 휘파람 불어.
Reference
이 문제에 관하여(2021년에 타자 스크립트 프로젝트 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/avalon-lab/setting-up-a-typescript-project-in-2021-4cfg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)