English • Español (Latinoamérica) • Français • Bahasa Indonesia • Italiano (Italian) • 日本語 (Japanese) • 한국어 (Korean) • Português (Brasil) • 简体中文 (Simplified Chinese) • 繁體中文 (Taiwanese Mandarin)
## Panduan penulisan Javascript, linter, dan formatter Modul ini menghemat waktu kamu (dan lainnya!) dengan tiga cara: - **Tanpa konfigurasi.** Cara paling mudah untuk menaikan kualitas kode kamu didalam projek. Tanpa harus membuat keputusan. Tanpa berkas`.eslintrc` untuk dikelola. Tinggal dijalankan. - **Secara otomatis memformat kode.** Tinggal jalankan `standard --fix` dan katakan selamat tinggal pada kode yang berantakan dan tidak konsisten. - **Tangkap masalah gaya penulisan & error dari programmer dengan cepat.** Hemat waktu untuk mereview kode dengan mengeliminasi kegiatan bolak-balik antara reviewer & kontributor. Cobalah dengan menjalankan `npx standard --fix` sekarang juga! ## Daftar isi - Quick start - [Pemasangan](#pemasangan) - [Penggunaan](#penggunaan) - [Apa yang kamu lakukan jika kamu pintar](#apa-yang-kamu-lakukan-jika-kamu-pintar) - FAQ - [Kenapa saya harus menggunakan JavaScript Standard Style?](#kenapa-saya-harus-menggunakan-javascript-standard-style) - [Siapa yang menggunakan JavaScript Standard Style?](#siapa-yang-menggunakan-javascript-standard-style) - [Apakah terdapat plugin untuk text editor?](#apakah-terdapat-plugin-untuk-text-editor) - [Apakah terdapat badge readme?](#apakah-terdapat-badge-readme) - [Saya tidak setuju dengan aturan X, bisakah diganti?](#saya-tidak-setuju-dengan-aturan-x-bisakah-diganti) - [Tapi ini bukanlah standar web yang sesungguhnya!](#tapi-ini-bukanlah-standar-web-yang-sesungguhnya) - [Apakah terdapat formater yang otomatis?](#apakah-terdapat-formater-yang-otomatis) - [Bagaimana cara saya mengabaikan berkas?](#bagaimana-cara-saya-mengabaikan-berkas) - [Bagaimana cara menyembunyikan peringatan tertentu?](#bagaimana-cara-menyembunyikan-peringatan-tertentu) - [Saya menggunakan librari yang memenuhi penamaan global. Bagaimana cara saya menghindari error "variable is not defined"?](#saya-menggunakan-librari-yang-memenuhi-penamaan-global-bagaimana-cara-saya-menghundari-error-variable-is-not-defined) - [Bagaimana cara saya menggunakan fitur javascript yang experimental (ES Next)?](#bagaimana-cara-saya-menggunakan-fitur-javascript-yang-experimental-es-next) - [Bisakah saya menggunakan varian bahasa Javascript, seperti Flow atau Typescript?](#bisakah-saya-menggunakan-varian-bahasa-javascript-seperti-flow-atau-typescript) - [Bagaimana dengan Mocha, Jest, Jasmine, QUnit, etc?](#bagaimana-dengan-mocha-jest-jasmine-qunit-etc) - [Bagaimana dengan Web Workers dan Service Workers?](#bagaimana-dengan-web-workers-dan-service-workers) - [Bisakah saya memeriksa kode didalam berkas Markdown atau HTML?](#bisakah-saya-memeriksa-kode-didalam-berkas-markdown-atau-html) - [Apakah terdapat Git `pre-commit` hook?](#apakah-terdapat-git-pre-commit-hook) - [Bagaimana cara membuat outputnya menjadi berwarna dan cantik?](#bagaimana-cara-membuat-outputnya-menjadi-berwarna-dan-cantik) - [Apakah terdapat API untuk NodeJS?](#apakah-terdapat-api-untuk-nodejs) - [Bagaimana caranya saya berkonstribusi kepada StandardJS?](#bagaimana-caranya-saya-berkonstribusi-kepada-standardjs) - [Lisensi](#lisensi) ## Pemasangan Cara paling mudah untuk menggunakan Javascript Standard Style adalah dengan menginstallnya secara global dengan program Node line command. Jalankan perintah berikut didalam Terminal: ```bash $ npm install standard --global ``` Atau, kamu bisa memasang `standard` secara lokal, untuk penggunaan didalam projek tunggal: ```bash $ npm install standard --save-dev ``` _Catatan: Untuk menjalankan perintah-perintahnya, [Node.js](http://nodejs.org) dan [npm](https://npmjs.com) harus diinstall terlebih dahulu._ ## Penggunaan Setelah kamu memasang `standard`, kamu harusnya sudah bisa untuk menggunakan program `standard`. Kasus paling sederhananya adalah memeriksa gaya penulisan dari seluruh berkas Javascript didalam direktori yang sedang digunakan: ```bash $ standard Error: Use JavaScript Standard Style lib/torrent.js:950:11: Expected '===' and instead saw '=='. ``` Jika kamu memasang `standard` secara lokal, lebih baik jalankan dengan `npx`: ```bash $ npx standard ``` Secara opsional kamu bisa memberikan sebuah direktori (atau direktori-direktori) menggunakan pola glob. Pastikan kamu memberikan tanda kutip pada path yang menganduk pola glob jadi direktori-direktorinya diperluas oleh `standard` daripada oleh shell-nya: ```bash $ standard "src/util/**/*.js" "test/**/*.js" ``` **Note:** secara default `standard` akan mencari seluruh berkas berkas dengan pola yang sama: `**/*.js`, `**/*.jsx`. ## Apa yang kamu lakukan jika kamu pintar 1. Tambahkan kedalam `package.json` ```json { "name": "my-cool-package", "devDependencies": { "standard": "*" }, "scripts": { "test": "standard && node my-tests.js" } } ``` 2. Gaya diperiksa secara otomatis ketika kamu menjalankan `npm test` ```bash $ npm test Error: Use JavaScript Standard Style lib/torrent.js:950:11: Expected '===' and instead saw '=='. ``` 3. Tidak perlu memberikan feedback pada gaya penulisan didalam pull request lagi! ## Kenapa saya harus menggunakan Javascript Standard Style? Keindahan dari Javascript Standard Style adalah kesederhanannya. Tidak ada seorangpun yang ingin memelihara berkas dengan ratusan-baris gaya konfigurasi untuk setiap modul/projek yang dikerjakan. Cukup untuk kegilaan itu! Modul ini menghemat waktu kamu (dan lainnya!) dengan tiga cara: - **Tanpa konfigurasi.** Cara paling mudah untuk menaikan kualitas kode kamu didalam projek. Tanpa harus membuat keputusan. Tanpa berkas`.eslintrc` untuk dikelola. Tinggal masukan. - **Secara otomatis memformat kode.** Tinggal jalankan `standard --fix` dan katakan selamat tinggal pada kode yang berantakan dan tidak konsisten. - **Tangkap masalah gaya penulisan & error dari programmer dengan cepat.** Hemat waktu untuk mereview kode dengan mengeliminasi kegiatan bolak-balik antara reviewer & kontributor. Mengadopsi gaya `standard` berarti meninggikan pentingnya kejelasan dan konvensi komunitas lebih tinggi daripada gaya penulisan sendiri. Hal ini mungkin tidak masuk akal untuk 100% projek dan kultur dari pengembangan, entah bagaimana untuk open source bisa menjadi tempat yang dihindari oleh pemula. Siapkan dengan jelas, ekspektasi otomasi kontributor membuat projek lebih baik. Untuk info lebih, lihatlah obrolan konferensi ["Write Perfect Code with Standard and ESLint"](https://www.youtube.com/watch?v=kuHfMw8j4xk). Didalam obrolan ini, kamu akan belajar tentang linting, kapan ketika menggunakan `standard` dibandingkan dengan `eslint`, dan bagaimana `indahnya` dibandingkan dengan `standard`. ## Siapa yang menggunakan Javascript Standard Style? | [
](https://nodejs.org) | [
](https://www.npmjs.com) | [
](https://github.com) | [
](https://www.elastic.co) |
| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| [
](http://expressjs.com) | [
](http://electron.atom.io) | [
](https://nuxtjs.org/) | [
](https://atom.io) |
| ------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| [
](https://www.mongodb.com) | [
](https://www.zendesk.com) | [
](https://www.brave.com) | [
](https://zeit.co) |
| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| [
](https://nodesource.com) | [
](http://www.nearform.com) | [
](https://www.typeform.com) | [
](https://gds.blog.gov.uk) |
| ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| [
](https://www.heroku.com) | [
](https://saucelabs.com) | [
](https://automattic.com) | [
](https://www.godaddy.com) |
| ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| [
](https://webtorrent.io) | [
](https://ipfs.io) | [
](https://datproject.org) | [
](https://bitcoinjs.org) |
| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| [
](https://voltra.co) | [
](https://www.treasuredata.com) | [
](https://bitmidi.com) | [
](https://www.apstudynotes.org) |
| -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [
](https://www.optiopay.com) | [
](https://www.jlrtechincubator.com/jlrti/) | [
](https://www.bustle.com) | [
](https://www.zentrick.com) |
| ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| [
](https://greenkeeper.io) | [
](https://karma-runner.github.io) | [
](https://www.taser.com) | [
](https://www.neo4j.com) |
| ------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| [
](https://rentograph.com) | [
](https://www.eaze.com) | [
](https://www.ctrlaltdeseat.com) | [
](https://clevertech.biz) |
| ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| [
](https://aragon.org) | [
](https://www.flowsent.com) | [
](https://www.pumabrowser.com/) | [
](https://www.jetbrains.com/webstorm/) |
| --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| [
](https://www.fastify.io) | [
](https://www.scuttlebutt.nz) | [
](https://solid.inrupt.com) | [
](https://www.grab.com) |
| -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| [
](https://swissdevjobs.ch/jobs/JavaScript/All) | Your logo here | Your logo here | Your logo here |
| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | -------------- | -------------- |
Selain perusahaan, beberapa anggota komunitas menggunakan `standard` didalam packages yang [terlalu banyak](https://raw.githubusercontent.com/standard/standard-packages/master/all.json)
untuk ditampilkan disini.
`standard` juga merupakan linter dengan peringkat teratas didalam showcase Github [Clean Code Linter](https://github.com/showcases/clean-code-linters).
## Apakah terdapat plugin untuk text editor?
Pertama, pasang `standard`. Lalu, pasang plugin yang sesuai untuk editor kamu:
### Sublime Text
Menggunakan **[Package Control][sublime-1]**, pasang **[SublimeLinter][sublime-2]** dan
**[SublimeLinter-contrib-standard][sublime-3]**.
Untuk formating otomatis saat menyimpan, pasang **[StandardFormat][sublime-4]**.
[sublime-1]: https://packagecontrol.io/
[sublime-2]: http://www.sublimelinter.com/en/latest/
[sublime-3]: https://packagecontrol.io/packages/SublimeLinter-contrib-standard
[sublime-4]: https://packagecontrol.io/packages/StandardFormat
### Atom
Pasang **[linter-js-standard][atom-1]**.
Secara alternatif, kamu bisa memasang **[linter-js-standard-engine][atom-4]**. Daripada versi `standard` yang telah digabungkan, versi ini akan secara otomatis menggunakan versi yang telah terpasang didalam projek yang sedang digunakan. Versi ini juga akan bekerja dengan linter lainnya yang berdasarkan **[standard-engine][atom-5]**.
Untuk formating otomatis, pasang **[standard-formatter][atom-2]**. Untuk snippets, pasang **[standardjs-snippets][atom-3]**.
[atom-1]: https://atom.io/packages/linter-js-standard
[atom-2]: https://atom.io/packages/standard-formatter
[atom-3]: https://atom.io/packages/standardjs-snippets
[atom-4]: https://atom.io/packages/linter-js-standard-engine
[atom-5]: https://github.com/standard/standard-engine
### Visual Studio Code
Pasang **[vscode-standard][vscode-1]**. (Sudah termasuk dukungan untuk pem-format otomatis.)
Snippets untuk JS, pasang **[vscode-standardjs-snippets][vscode-2]**. Snippets untuk React, pasang **[vscode-react-standard][vscode-3]**.
[vscode-1]: https://marketplace.visualstudio.com/items?itemName=standard.vscode-standard
[vscode-2]: https://marketplace.visualstudio.com/items?itemName=capaj.vscode-standardjs-snippets
[vscode-3]: https://marketplace.visualstudio.com/items?itemName=TimonVS.ReactSnippetsStandard
### Vim
Pasang **[ale][vim-1]**. Dan tambahkan baris ini kedalam berkas `.vimrc`.
```vim
let g:ale_linters = {
\ 'javascript': ['standard'],
\}
let g:ale_fixers = {'javascript': ['standard']}
```
Kode ini akan menyetel standard sebagai satu-satunya linter dan fixer untuk file javascript kamu dan menghindari konflik dengan eslint. Untuk linting dan pembenaran otomatis saat disimpan, tambahkan baris ini kedalam `.vimrc`:
```vim
let g:ale_lint_on_save = 1
let g:ale_fix_on_save = 1
```
Plugin alternatif untuk dipertimbangkan [neomake][vim-2] dan [syntastic][vim-3], keduanya memiliki dukungan bawaan untuk `standard` (walaupun konfigurasi mungkin masih dibutuhkan).
[vim-1]: https://github.com/w0rp/ale
[vim-2]: https://github.com/neomake/neomake
[vim-3]: https://github.com/vim-syntastic/syntastic
### Emacs
Pasang **[Flycheck][emacs-1]** dan lihat **[manual][emacs-2]** untuk mempelajari bagaimana cara menggunakannya didalam projek kamu.
[emacs-1]: http://www.flycheck.org
[emacs-2]: http://www.flycheck.org/en/latest/user/installation.html
### Brackets
Carilah ekstensi registry untuk **["Standard Code Style"][brackets-1]** dan klik "Install".
[brackets-1]: https://github.com/ishamf/brackets-standard/
### WebStorm (PhpStorm, IntelliJ, RubyMine, JetBrains, etc.)
WebStorm [baru saja mengumumkan dukungan natif](https://blog.jetbrains.com/webstorm/2017/01/webstorm-2017-1-eap-171-2272/)
untuk `standard` langsung didalam IDE.
Jika kamu lebih suka untuk mengkonfigurasi `standard` secara manual, [ikuti arahan disini][webstorm-1]. Arahan tersebuh dapat diaplikasikan kedalam seluruh produk JetBrains, termasuk PhpStorm, IntelliJ, RubyMine, etc.
[webstorm-1]: webstorm.md
## Apakah terdapat badge readme?
Ya! jika kamu menggunakan `standard didalam projek kamu, kamu bisa memasukan salah satu dari badge ini didalam readme kamu untuk membiarkan orang-orang tahu bahwa kode kamu menggunakan gaya standard.
[](https://github.com/standard/standard)
```md
[](https://github.com/standard/standard)
```
[](https://standardjs.com)
```md
[](https://standardjs.com)
```
## Saya tidak setuju dengan aturan X, bisakah diganti??
Tidak. Point utama dari `standard` adalah untuk menghemat waktu kamu dengan menghindari [bikeshedding][bikeshedding] didalam gaya penulisan. Masih banyak perdebatan obline tentang penggunaan tabs dengan spasi, dll. Yang mana tidak akan berakhir. Debat-debat ini hanya akan mengganggu kita menyelesaikan pekerjaan kita. Pada akhirnya kamu 'harus memilih sesuatu', dan itulah seluruh filosofi dari `standard` -- 'pilihlah sesuatu' adalah opini yang masuk akal. Semoga, pengguna melihat nilai dari opini itu daripada harus terus berdebat tentang hal-hal lainnya.
Terdapat beberapa package yang mirip untuk orang-orang yang tidak ingin sepenuhnya menggunakan `standard`:
- [semistandard](https://github.com/standard/semistandard) - standard, dengan titik koma
- [standardx](https://github.com/standard/standardx) - standard, dengan pengaturan kustom
Jika kamu benar-benar ingin mengkonfigurasi ratusan dari aturan ESLint satu persatu, kamu selalu bisa menggunakan `eslint` langsung dengan [eslint-config-standard](https://github.com/standard/eslint-config-standard) untuk melapisi perubahan terlebih dahulu.
[`standard-eject`](https://github.com/josephfrazier/standard-eject) bisa membantu kamu memigrasi dari `standard` menjadi `eslint` dan `eslint-config-standard`.
Saran ahli: Gunakanlah `standard`. Terdapat masalah sesungguhnya yang mana akan menghabiskan waktu kamu dalam memecahkan masalahnya! :P
[bikeshedding]: https://www.freebsd.org/doc/en/books/faq/misc.html#bikeshed-painting
## Tapi ini bukanlah standar web yang sesungguhnya!
Tentu saja bukan! Gayanya yang digunakan disini tidak terdapat pada official web standards groups manapun, itulah kenapa repo ini dipanggil dengan `standard/standard` dan bukan `ECMA/standard`.
Kata dari "standard" memiliki arti lebih dari "web standard" :-) Contoh:
- Modul ini membantu kode kita untuk memiliki _kualitas dari standard_ yang tinggi.
- Modul ini memastikan bahwa kontributor baru mengikuti dasar dari beberapa _style standards_.
## Apakah terdapat formater yang otomatis?
Ya! Kamu bisa menggunakan `standard --fix` untuk memperbaiki kebanyakan masalah secara otomatis.
`standard --fix` dibuat kedalam `standard` untuk kenyamanan yang maksimal. Tapi kebanyakan masalah dapat diperbaiki, tapi beberapa error (seperti lupa untuk menghandle error) harus diperbaiki secara manual.
Untuk menghemat waktu kamu, `standard` mengeluarkan pesan "`Run standard --fix untuk secara otomatis memperbaiki beberapa masalah`" ketika kode tersebut mendeteksi masalah yang bisa diperbaiki secara otomatis.
## Bagaimana cara saya mengabaikan berkas?
Beberapa path (`node_modules/`, `coverage/`, `vendor/`, `*.min.js`, dan berkas/folder yang dimulai dengan `.` seperti `.git/`) akan secara otomatis diabaikan.
Path didalam sebuah file projek root `.gitignore` juga secara otomatis diabaikan.
Terkadang kamu perlu untuk mengabaikan folder tambahan atau file tertentu yang telah di minified. Untuk melakukan hal itu, tambahkan properti `standard.ignore` didalam `package.json`:
```json
"standard": {
"ignore": [
"**/out/",
"/lib/select2/",
"/lib/ckeditor/",
"tmp.js"
]
}
```
## Bagaimana cara menyembunyikan peringatan tertentu?
Didalam kasus yang jarang terjadi, kamu perlu keluar dari aturan dan menyembunyikan peringatan yang dibuat oleh `standard`.
Javascript Standard Style menggunakan [ESLint](http://eslint.org/) didalamnya dan kamu bisa menyembunyikan peringatan seperti saat kamu menggunakan ESLint secara langsung.
Nonaktifkan **semua aturan** didalam baris tertentu:
```js
file = "I know what I am doing"; // eslint-disable-line
```
Atau, Nonaktifkan **hanya** aturan`"no-use-before-define"`:
```js
file = "I know what I am doing"; // eslint-disable-line no-use-before-define
```
Atau, nonaktifkan aturan `"no-use-before-define"` untuk **beberapa baris**:
```js
/* eslint-disable no-use-before-define */
console.log("offending code goes here...");
console.log("offending code goes here...");
console.log("offending code goes here...");
/* eslint-enable no-use-before-define */
```
## Saya menggunakan librari yang memenuhi penamaan global. Bagaimana cara saya menghindari error "variable is not defined"?
Beberapa package (seperti `mocha`) yang memasukan fungsinya (seperti `describe`, `it`) didalam objek global (bentuk yang buruk). Sejak fungsi-fungsi ini tidak didefinisikan atau `require` dimanapun didalam kode kamu, `standard` akan memperingatkan bahwa kamu menggunakan variabel yang tidak didefinisikan (biasanya, aturan ini akan sangat berguna untuk menangkap typo-typo!). Tapi kita ingin menonaktifkannya untuk variabel-variabel global.
Untuk membiarkan `standard` (tentunya sama seperti manusia yang membaca kode kamu) mengetahui bahwa beberapa variabel adalah global didalam kode kamu, tambahkan ini dipaling atas dari berkas kamu:
```js
/* global myVar1, myVar2 */
```
Jika kamu mempunyai ratusan berkas, mungkin kamu ingin menghindari menambahkan komentar disetiap berkas. Dalam kasus ini, jalankan:
```bash
$ standard --global myVar1 --global myVar2
```
Atau, tambahkan ini kedalam `package.json`:
```json
{
"standard": {
"globals": ["myVar1", "myVar2"]
}
}
```
_Catatan: `global` dan `globals` sama saja._
## Bagaimana cara saya menggunakan fitur javascript yang experimental (ES Next)?
`standard` mendukung fitur ECMAScript yang paling terbaru, ES8 (ES2017), termasuk fitur proposal bahasa yang mana sekarang didalam "Stage 4" dari proses proposal.
Untuk mendukun fitur bahasa eksperimental, `standard` menspesifikasikan dukungan kustom parser Javascript. Sebelum menggunakan parser kustom, pertimbangkan apakah menambahkan kompleksitas akan bermanfaat.
Untuk mendukung parser kustom, pertama pasang dahulu dari npm:
```bash
npm install @babel/eslint-parser --save-dev
```
Lalu jalankan:
```bash
$ standard --parser @babel/eslint-parser
```
Atau, tambahkan ini kedalam `package.json`:
```json
{
"standard": {
"parser": "@babel/eslint-parser"
}
}
```
## Bisakah saya menggunakan varian bahasa Javascript, seperti Flow atau Typescript?
`standard` mendukung fitur ECMAScript yang paling terbaru. Namun, Flow dan TypeScript menambahkan sintaks baru kedalam bahasanya, jadi keduanya tidak didukung.
Untuk mendukung varian bahasa dari Javascript, `standard` mendukung menspesifikasikan parser Javascript kustom sama sepertin plugin ESLint untuk meng-handle perubahan sintaks. Sebelum menggunakan varian bahasa dari Javascript, pertimbangkan apakah menambah kompleksitas akan bermanfaat.
### Flow
Untuk menggunakan Flow, kamu harus menjalankan `standard` dengan `@babel/eslint-parser` sebagai parsernya dan `eslint-plugin-flowtype` sebagai pluginnya.
```bash
npm install @babel/eslint-parser eslint-plugin-flowtype --save-dev
```
Lalu jalankan:
```bash
$ standard --parser @babel/eslint-parser --plugin flowtype
```
Atau, tambahkan ini kedalam `package.json`:
```json
{
"standard": {
"parser": "@babel/eslint-parser",
"plugins": ["flowtype"]
}
}
```
_Catatan: `plugin` dan `plugins` sama saja._
### TypeScript
Untuk menggunakan TypeScript, kamu harus menjalankan `standard` dengan `@typescript-eslint/parser` sebagai parsernya, `@typescript-eslint/eslint-plugin` sebagai pluginnya, dan beritahu standard untuk lint berkas `**/*.ts` (karena hal itu tidak diimplementasikan secara default).
Sayangnya, terdapat [masalah](https://github.com/standard/standard/issues/1283) yang terjadi diluar dugaan dengan `standard` dan TypeScript dimana `standard` mengeluarkan error unused-variable yang tidak benar (misal: ketika kamu mengimport interface). Dan sebagai solusi, kamu bisa menggunakan [standardx](https://github.com/standard/standardx) :sweat_smile:.
```bash
npm install standardx @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev
```
Lalu jalankan:
```bash
$ standardx --parser @typescript-eslint/parser --plugin @typescript-eslint/eslint-plugin **/*.ts
```
Atau, tambahkan ini kedalam `package.json`:
```json
{
"eslintConfig": {
"rules": {
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": "error"
}
},
"standardx": {
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint/eslint-plugin"]
}
}
```
Dengan kode diatas didalam `package.json`, kamu bisa menjalankan:
```bash
standardx **/*.ts
```
Dan kamu mungkin harus menghilangkan `standard` juga untuk menghindari kebingungan dimana itu digunakan secara tidak sengaja dimana seharusnya `standarx`.
```bash
npm uninstall standard
```
## Bagaimana dengan Mocha, Jest, Jasmine, QUnit, etc?
Untuk dukungan mocha didalam berkas test, tambahkan kode ini dibagian paling atas dari berkas test:
```js
/* eslint-env mocha */
```
Atau, Jalankan:
```bash
$ standard --env mocha
```
Dimana `mocha` bisa jadi salah satu dari `jest`, `jasmine`, `qunit`, `phantomjs`, dan lainnya. Untuk melihat seluruh daftar, lihat dokumentasi ESLint
[specifying environments](http://eslint.org/docs/user-guide/configuring.html#specifying-environments). Untuk melihat global apa saja yang tersedia didalam environment ini, lihat npm modul [globals](https://github.com/sindresorhus/globals/blob/master/globals.json).
_Catatan: `env` dan `envs` sama saja._
## Bagaimana dengan Web Workers dan Service Workers?
Tambahkan kode ini dibagian paling atas dari berkas web worker:
```js
/* eslint-env worker */
```
Kode diatas membiarkan `standard` (sama seperti manusia yang membaca kodenya) tahu bahwa `self` adalah sebuah global didalam kode web worker.
Untuk Service Worker, tambahkan kode ini:
```js
/* eslint-env serviceworker */
```
## Bisakah saya memeriksa kode didalam berkas Markdown atau HTML?
Untuk memeriksa berkas Markdown, gunakan [`standard-markdown`](https://www.npmjs.com/package/standard-markdown).
Alternatifnya, terdapat plugin ESLint yang bisa memeriksa kode didalam Markdown, HTML, dan berkas dengan bahasa yang lain:
Untuk memeriksa kode didalam berkas Markdown, gunakan plugin ESLint:
```bash
$ npm install eslint-plugin-markdown
```
Lalu, untuk memeriksa JS yang muncul didalam blok kode, jalankan:
```bash
$ standard --plugin markdown '**/*.md'
```
Untuk memeriksa kode didalam berkas HTML, gunakan plugin ESLint:
```bash
$ npm install eslint-plugin-html
```
Lalu, untuk memeriksa JS yang muncul didalam tag `