diff --git a/.babelrc b/.babelrc
deleted file mode 100644
index c13c5f627..000000000
--- a/.babelrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "presets": ["es2015"]
-}
diff --git a/.eslintrc b/.eslintrc
deleted file mode 100644
index d0dd64cbb..000000000
--- a/.eslintrc
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "root": true,
- "extends": "vue"
-}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 000000000..368015cff
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,44 @@
+name: 'ci'
+on:
+ push:
+ branches:
+ - '**'
+ pull_request:
+ branches:
+ - main
+jobs:
+ test-webpack4:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set node version to 16
+ uses: actions/setup-node@v2
+ with:
+ node-version: 16
+ cache: 'yarn'
+ - run: yarn install
+ - run: yarn test:webpack4
+
+ test-webpack5:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set node version to 16
+ uses: actions/setup-node@v2
+ with:
+ node-version: 16
+ cache: 'yarn'
+ - run: yarn install
+ - run: yarn test
+
+ test-webpack5-inline-match-resource:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set node version to 16
+ uses: actions/setup-node@v2
+ with:
+ node-version: 16
+ cache: 'yarn'
+ - run: yarn install
+ - run: yarn test:match-resource
diff --git a/.gitignore b/.gitignore
index e45d3c71e..7ff6b0d08 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,10 @@
-node_modules
-npm-debug.log
-test/output
-docs/_book
+*.log
.DS_Store
-.idea
-*.iml
+node_modules
+dist
+dist-ssr
+link.sh
+.cache
+TODOs.md
+coverage
+.vscode
diff --git a/.node-version b/.node-version
new file mode 100644
index 000000000..9e15be387
--- /dev/null
+++ b/.node-version
@@ -0,0 +1 @@
+v16.20.0
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 000000000..f5a1bdcdd
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,3 @@
+semi: false
+singleQuote: true
+printWidth: 80
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 000000000..3662b3700
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "typescript.tsdk": "node_modules/typescript/lib"
+}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 000000000..be886b7b4
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,475 @@
+## [17.2.1](https://github.com/vuejs/vue-loader/compare/v17.1.2...v17.2.1) (2023-06-01)
+
+
+### Features
+
+* A new `experimentalInlineMatchResource` option (webpack 5 only), which leverages webpack 5's inline match resource feature and works well with the [`experiments.css`](https://webpack.js.org/configuration/experiments/#experimentscss) feature ([#2046](https://github.com/vuejs/vue-loader/issues/2046)) ([3149f6d](https://github.com/vuejs/vue-loader/commit/3149f6d69c2f456bdcfa23acc0da93473a93a764))
+
+
+Note: v17.2.0 was released by accident, it has the same content as v17.1.2, therefore not included in the changelog.
+
+
+## [17.1.2](https://github.com/vuejs/vue-loader/compare/v17.1.1...v17.1.2) (2023-05-29)
+
+
+### Bug Fixes
+
+* keep build stable when run in a different path ([#2040](https://github.com/vuejs/vue-loader/issues/2040)) ([a81dc0f](https://github.com/vuejs/vue-loader/commit/a81dc0f573d216eefa13b0275f3fc147bf3e2ef3))
+* properly close the watcher after tests ([40b93b9](https://github.com/vuejs/vue-loader/commit/40b93b9c2722e85a000de62e3eb8bc02facafd10))
+
+
+
+## [17.1.1](https://github.com/vuejs/vue-loader/compare/v17.1.0...v17.1.1) (2023-05-11)
+
+
+### Bug Fixes
+
+* support propsDestructure and defineModel options ([6269698](https://github.com/vuejs/vue-loader/commit/6269698f9fda37f0e3849db3e8b8e67ad1862f57))
+
+
+
+# [17.1.0](https://github.com/vuejs/vue-loader/compare/v17.1.0-beta.0...v17.1.0) (2023-04-26)
+
+
+### Bug Fixes
+
+* do not throw when `Rule.layer` ([#2000](https://github.com/vuejs/vue-loader/issues/2000)) ([ef589df](https://github.com/vuejs/vue-loader/commit/ef589df2956506a5a7bbc050c476501d32dd8469))
+
+
+
+# [17.1.0-beta.0](https://github.com/vuejs/vue-loader/compare/v17.0.1...v17.1.0-beta.0) (2023-04-19)
+
+
+### Bug Fixes
+
+* reference project compiler, fixes [#2031](https://github.com/vuejs/vue-loader/issues/2031) ([#2038](https://github.com/vuejs/vue-loader/issues/2038)) ([cc6fa9e](https://github.com/vuejs/vue-loader/commit/cc6fa9ebf85972a08fc8bbc359b0093b15790745))
+
+
+### Features
+
+* support 3.3 imported types hmr ([bbd98fc](https://github.com/vuejs/vue-loader/commit/bbd98fc8bdc17fcbffb456a5ffe772bc184f22e4))
+
+
+
+## [17.0.1](https://github.com/vuejs/vue-loader/compare/v17.0.0...v17.0.1) (2022-10-28)
+
+
+### Bug Fixes
+
+* add `vue` and `@vue/compiler-sfc` to optional peerDependencies ([df0ded5](https://github.com/vuejs/vue-loader/commit/df0ded5356864b9923da8f89ff33db1ae6c2402f)), closes [#1944](https://github.com/vuejs/vue-loader/issues/1944)
+* merge custom queries rather than appending ([#1911](https://github.com/vuejs/vue-loader/issues/1911)) ([9e4249a](https://github.com/vuejs/vue-loader/commit/9e4249a548ceb04ead46fff9b68e9b2676b4c692))
+
+
+
+## [17.0.1](https://github.com/vuejs/vue-loader/compare/v16.8.3...v17.0.1) (2022-10-28)
+
+
+### Bug Fixes
+
+* add `vue` and `@vue/compiler-sfc` to optional peerDependencies ([df0ded5](https://github.com/vuejs/vue-loader/commit/df0ded5356864b9923da8f89ff33db1ae6c2402f)), closes [#1944](https://github.com/vuejs/vue-loader/issues/1944)
+* merge custom queries rather than appending ([#1911](https://github.com/vuejs/vue-loader/issues/1911)) ([9e4249a](https://github.com/vuejs/vue-loader/commit/9e4249a548ceb04ead46fff9b68e9b2676b4c692))
+
+
+
+# [17.0.0](https://github.com/vuejs/vue-loader/compare/v16.8.3...v17.0.0) (2021-12-12)
+
+
+### Features
+
+* support `reactivityTransform` option ([e07490e](https://github.com/vuejs/vue-loader/commit/e07490ec8b8ac9e00050251d6f0e697fb1f3bf3c))
+
+
+### BREAKING CHANGES
+
+* remove `refSugar` option, require `vue@^3.2.13`
+
+
+
+## [16.8.3](https://github.com/vuejs/vue-loader/compare/v16.8.2...v16.8.3) (2021-11-04)
+
+
+### Bug Fixes
+
+* HMR not working correctly with vue-class-component components ([#1897](https://github.com/vuejs/vue-loader/issues/1897)) ([76b1448](https://github.com/vuejs/vue-loader/commit/76b1448eb227c42e1791a691a86782b7a8cacfc0))
+
+
+
+## [16.8.3](https://github.com/vuejs/vue-loader/compare/v16.8.2...v16.8.3) (2021-11-04)
+
+
+### Bug Fixes
+
+* HMR not working correctly with vue-class-component components ([#1897](https://github.com/vuejs/vue-loader/issues/1897)) ([76b1448](https://github.com/vuejs/vue-loader/commit/76b1448eb227c42e1791a691a86782b7a8cacfc0))
+
+
+
+## [16.8.2](https://github.com/vuejs/vue-loader/compare/v16.8.1...v16.8.2) (2021-10-26)
+
+
+### Bug Fixes
+
+* should allow chaining with loaders for non-vue files ([#1889](https://github.com/vuejs/vue-loader/issues/1889)) ([f32f953](https://github.com/vuejs/vue-loader/commit/f32f9538ea34fc08e1a28622227896241847690f)), closes [#1879](https://github.com/vuejs/vue-loader/issues/1879) [#1883](https://github.com/vuejs/vue-loader/issues/1883) [#1890](https://github.com/vuejs/vue-loader/issues/1890)
+* **plugin:** use compiler.webpack when possible ([#1884](https://github.com/vuejs/vue-loader/issues/1884)) ([820d23c](https://github.com/vuejs/vue-loader/commit/820d23cbf16013dae894e0d84ed9da6e58a37584))
+
+
+
+## [16.8.1](https://github.com/vuejs/vue-loader/compare/v16.8.0...v16.8.1) (2021-09-22)
+
+
+### Bug Fixes
+
+* fix template options resolving for ts ([91f581b](https://github.com/vuejs/vue-loader/commit/91f581b99644119b68e586a0b642fff3811c8741))
+
+# [16.8.0](https://github.com/vuejs/vue-loader/compare/v16.7.1...v16.8.0) (2021-09-22)
+
+
+### Bug Fixes
+
+* **hmr:** fix hmr regression ([bacc6a9](https://github.com/vuejs/vue-loader/commit/bacc6a9eeca40d6028a2d9a5f6ee02e6c8574abd))
+
+
+### Features
+
+* enableTsInTemplate option ([7613534](https://github.com/vuejs/vue-loader/commit/7613534954b83489a060860b9525a0d121023c5b))
+
+ - When used with `ts-loader`, due to `ts-loader`'s cache invalidation behavior, it sometimes prevents the template from being hot-reloaded in isolation, causing the component to reload despite only the template being edited. If this is annoying, you can set this option to `false` (and avoid using TS expressions in templates).
+
+ - Alternatively, leave this option on (by default) and use [`esbuild-loader`](https://github.com/privatenumber/esbuild-loader) to transpile TS instead, which doesn't suffer from this problem (it's also a lot faster). However, do note you will need to rely on TS type checking from other sources (e.g. IDE or `vue-tsc`).
+
+## [16.7.1](https://github.com/vuejs/vue-loader/compare/v16.7.0...v16.7.1) (2021-09-22)
+
+
+### Bug Fixes
+
+* remove pure annotation for custom blocks ([cd891e5](https://github.com/vuejs/vue-loader/commit/cd891e593bf7f8aff852f1d47fda2337de661bea))
+
+
+# [16.7.0](https://github.com/vuejs/vue-loader/compare/v16.6.0...v16.7.0) (2021-09-21)
+
+
+### Features
+
+* support optional @vue/compiler-sfc peer dep ([21725a4](https://github.com/vuejs/vue-loader/commit/21725a4ebc9c8d7f8a590d700017759327e21c2e))
+
+
+# [16.6.0](https://github.com/vuejs/vue-loader/compare/v16.5.0...v16.6.0) (2021-09-20)
+
+
+### Bug Fixes
+
+* generate treeshaking friendly code ([11e3cb8](https://github.com/vuejs/vue-loader/commit/11e3cb8a8a4a4e0aedc2978ce6d7e549a61de3d7))
+
+
+### Features
+
+* support ts in template expressions ([573fbd2](https://github.com/vuejs/vue-loader/commit/573fbd2e72c3246c2daadb8d8c053464c964cfe3))
+
+
+# [16.5.0](https://github.com/vuejs/vue-loader/compare/v16.4.1...v16.5.0) (2021-08-07)
+
+* Custom Elements mode behavior changed: now only inlines the CSS and no longer exports the custom element constructor (exports the component as in normal mode). Users now need to explicitly call `defineCustomElement` on the component. This allows the custom element to be defined using an async version of the source component.
+
+
+## [16.4.1](https://github.com/vuejs/vue-loader/compare/v16.4.0...v16.4.1) (2021-08-02)
+
+
+### Bug Fixes
+
+* fix webpack 5.48 compatibility ([b94289c](https://github.com/vuejs/vue-loader/commit/b94289c9fb395556100ec121529dfe676280d3cd)), closes [#1859](https://github.com/vuejs/vue-loader/issues/1859)
+
+
+# [16.4.0](https://github.com/vuejs/vue-loader/compare/v16.3.3...v16.4.0) (2021-07-30)
+
+
+### Features
+
+* customElement option support for Vue 3.2 ([e19fcda](https://github.com/vuejs/vue-loader/commit/e19fcdaa62c4aa5d826c33a0e7fb8786904ee225))
+
+
+## [16.3.3](https://github.com/vuejs/vue-loader/compare/v16.3.2...v16.3.3) (2021-07-21)
+
+
+### Bug Fixes
+
+* mark @vue/compiler-sfc as an optional peer dependency ([089473a](https://github.com/vuejs/vue-loader/commit/089473af97077b8e14b3feff48d32d2733ad792c))
+
+
+
+## [16.3.2](https://github.com/vuejs/vue-loader/compare/v16.3.1...v16.3.2) (2021-07-20)
+
+
+### Bug Fixes
+
+* add undeclared peer dependency `webpack` and `@vue/compiler-sfc` ([#1853](https://github.com/vuejs/vue-loader/issues/1853)) ([330d672](https://github.com/vuejs/vue-loader/commit/330d672fb344fddefec98e170587d93876a9e354))
+
+
+
+## [16.3.1](https://github.com/vuejs/vue-loader/compare/v16.3.0...v16.3.1) (2021-07-16)
+
+
+### Bug Fixes
+
+* pick up production env in thread-loader context ([821a3a3](https://github.com/vuejs/vue-loader/commit/821a3a35f04cda3154a9341898225f61d72b3f05)), closes [vuejs/vue-next#3921](https://github.com/vuejs/vue-next/issues/3921)
+
+
+
+# [16.3.0](https://github.com/vuejs/vue-loader/compare/v16.2.0...v16.3.0) (2021-06-29)
+
+
+### Features
+
+* pass on compilerOptions and refSugar when using `
+
+
```
-This will setup a basic Webpack + `vue-loader` project for you, with `*.vue` files and hot-reloading working out of the box!
+There are many cool features provided by `vue-loader`:
+
+- Allows using other webpack loaders for each part of a Vue component, for example Sass for `
-```
-
-#### webpack.config.js
-
-``` js
-// Webpack 2.x
-var ExtractTextPlugin = require("extract-text-webpack-plugin")
-
-module.exports = {
- module: {
- rules: [
- {
- test: /\.vue$/,
- loader: 'vue',
- options: {
- loaders: {
- // extract all content as raw text
- 'docs': ExtractTextPlugin.extract('raw-loader'),
- }
- }
- }
- ],
- plugins: [
- // output all docs into a single file
- new ExtractTextPlugin('docs.md')
- ]
- }
-}
-```
diff --git a/docs/en/configurations/extract-css.md b/docs/en/configurations/extract-css.md
deleted file mode 100644
index 750f65a9c..000000000
--- a/docs/en/configurations/extract-css.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# Extracting CSS into a Single File
-
-Example config to extract all the processed CSS in all Vue components into a single CSS file:
-
-### Webpack 2.x
-
-``` bash
-npm install extract-text-webpack-plugin@2.x --save-dev
-```
-
-``` js
-// webpack.config.js
-var ExtractTextPlugin = require("extract-text-webpack-plugin")
-
-module.exports = {
- // other options...
- module: {
- rules: [
- {
- test: /\.vue$/,
- loader: 'vue-loader',
- options: {
- loaders: {
- css: ExtractTextPlugin.extract({
- loader: 'css-loader',
- fallbackLoader: 'vue-style-loader' // <- this is a dep of vue-loader, so no need to explicitly install if using npm3
- })
- }
- }
- }
- ]
- },
- plugins: [
- new ExtractTextPlugin("style.css")
- ]
-}
-```
-
-### Webpack 1.x
-
-``` bash
-npm install extract-text-webpack-plugin --save-dev
-```
-
-``` js
-// webpack.config.js
-var ExtractTextPlugin = require("extract-text-webpack-plugin")
-
-module.exports = {
- // other options...
- module: {
- loaders: [
- {
- test: /\.vue$/,
- loader: 'vue'
- },
- ]
- },
- vue: {
- loaders: {
- css: ExtractTextPlugin.extract("css"),
- // you can also include
-```
-
-Under the hood, the text content inside the `
-```
-
-However, note this makes your Vue component Webpack-specific and not compatible with Browserify and [vueify](https://github.com/vuejs/vueify). **If you intend to ship your Vue component as a reusable 3rd-party component, avoid using this syntax.**
diff --git a/docs/en/features/css-modules.md b/docs/en/features/css-modules.md
deleted file mode 100644
index af9fb3d66..000000000
--- a/docs/en/features/css-modules.md
+++ /dev/null
@@ -1,117 +0,0 @@
-# CSS Modules
-
-> requires ^9.8.0
-
-[CSS Modules](https://github.com/css-modules/css-modules) is a popular system for modularizing and composing CSS. `vue-loader` provides first-class integration with CSS Modules as an alternative for simulated scoped CSS.
-
-### Usage
-
-Just add the `module` attribute to your `
-```
-
-This will turn on CSS Modules mode for `css-loader`, and the resulting class identifier object will be injected into the component as a computed property with the name `$style`. You can use it in your templates with a dynamic class binding:
-
-``` html
-
-
- This should be red
-
-
-```
-
-Since it's a computed property, it also works with the object/array syntax of `:class`:
-
-``` html
-
-
-
- Am I red?
-
-
- Red and bold
-
-
-
-```
-
-And you can also access it from JavaScript:
-
-``` html
-
-```
-
-Refer to the [CSS Modules spec](https://github.com/css-modules/css-modules) for mode details such as [global exceptions](https://github.com/css-modules/css-modules#exceptions) and [composition](https://github.com/css-modules/css-modules#composition).
-
-### Custom Inject Name
-
-You can have more than one `
-
-
-```
-
-### Configuring `css-loader` Query
-
-CSS Modules are processed via [css-loader](https://github.com/webpack/css-loader). With `
-
-
-
hi
-
-```
-
-Into the following:
-
-``` html
-
-
-
-
hi
-
-```
-
-#### Notes
-
-1. You can include both scoped and non-scoped styles in the same component:
-
- ``` html
-
-
-
- ```
-
-2. A child component's root node will be affected by both the parent's scoped CSS and the child's scoped CSS.
-
-3. Partials are not affected by scoped styles.
-
-4. **Scoped styles do not eliminate the need for classes**. Due to the way browsers render various CSS selectors, `p { color: red }` will be many times slower when scoped (i.e. when combined with an attribute selector). If you use classes or ids instead, such as in `.example { color: red }`, then you virtually eliminate that performance hit. [Here's a playground](http://stevesouders.com/efws/css-selectors/csscreate.php) where you can test the differences yourself.
-
-5. **Be careful with descendant selectors in recursive components!** For a CSS rule with the selector `.a .b`, if the element that matches `.a` contains a recursive child component, then all `.b` in that child component will be matched by the rule.
diff --git a/docs/en/options.md b/docs/en/options.md
deleted file mode 100644
index 74d6610cb..000000000
--- a/docs/en/options.md
+++ /dev/null
@@ -1,182 +0,0 @@
-# Options Reference
-
-## Usage Difference Between Webpack 1 & 2
-
-For Webpack 2: pass the options directly to the loader rule.
-
-``` js
-module.exports = {
- // ...
- module: {
- rules: [
- {
- test: /\.vue$/,
- loader: 'vue-loader',
- options: {
- // vue-loader options
- }
- }
- ]
- }
-}
-```
-
-For Webpack 1.x: add a root `vue` block in your Webpack config.
-
-``` js
-module.exports = {
- // ...
- vue: {
- // vue-loader options
- }
-}
-```
-
-### loaders
-
-- type: `{ [lang: string]: string }`
-
- An object specifying Webpack loaders to overwrite the default loaders used for language blocks inside `*.vue` files. The key corresponds to the `lang` attribute for language blocks, if specified. The default `lang` for each type is:
-
- - ``: `html`
- - `
-
-
-
-
- This could be e.g. documentation for the component.
-
-```
-
-`vue-loader` will parse the file, extract each language block, pipe them through other loaders if necessary, and finally assemble them back into a CommonJS module whose `module.exports` is a Vue.js component options object.
-
-`vue-loader` supports using non-default languages, such as CSS pre-processors and compile-to-HTML template languages, by specifying the `lang` attribute for a language block. For example, you can use SASS for the style of your component like this:
-
-``` html
-
-```
-
-More details can be found in [Using Pre-Processors](../configurations/pre-processors.md).
-
-### Language Blocks
-
-#### ``
-
-- Default language: `html`.
-
-- Each `*.vue` file can contain at most one `` block at a time.
-
-- Contents will be extracted as a string and used as the `template` option for the compiled Vue component.
-
-#### `
-```
-
-Beware that `src` imports follow the same path resolution rules to CommonJS `require()` calls, which means for relative paths you need to start with `./`, and you can import resources directly from installed NPM packages, e.g:
-
-``` html
-
-
-```
-
-내부적으로, `
-```
-
-그러나 이것은 Vue 컴포넌트가 Webpack에 한정되어 있고 Browserify 및 [vueify](https://github.com/vuejs/vueify)와 호환되지 않습니다. **Vue 컴포넌트를 재사용 가능한 써드파티로 제공하려면 이 구문을 사용하지 마십시오.**
diff --git a/docs/kr/features/css-modules.md b/docs/kr/features/css-modules.md
deleted file mode 100644
index c1c8edbf2..000000000
--- a/docs/kr/features/css-modules.md
+++ /dev/null
@@ -1,117 +0,0 @@
-# CSS 모듈
-
-> 9.8.0 이상 버전을 요구합니다
-
-[CSS 모듈](https://github.com/css-modules/css-modules)은 CSS을 모듈화하고 구성하는데 널리 사용되는 시스템입니다. `vue-loader`는 시뮬레이트된 범위 CSS의 대안으로 CSS 모듈과 함께 1급 클래스로의 통합을 제공합니다.
-
-### 사용법
-
-`
-```
-
-이렇게하면 `css-loader`에 대한 CSS 모듈 모드가 켜지고 결과적으로 클래스 식별자 오브젝트는 `$style` 이름의 계산된 속성으로 컴포넌트에 주입됩니다. 동적 클래스 바인딩을 사용하여 템플릿에서 이를 사용할 수 있습니다.
-
-``` html
-
-
- 이것은 빨간색이야
-
-
-```
-
-이는 계산된 속성이기 때문에 `:class`의 오브젝트/배열 문법에도 작동합니다.
-
-``` html
-
-
-
- 나는 빨간색이야?
-
-
- 나는 빨간색이면서 볼드야
-
-
-
-```
-
-또한 JavaScript에서도 접근할 수 있습니다.
-
-``` html
-
-```
-
-[전역 예외사항](https://github.com/css-modules/css-modules#exceptions)과 [구성](https://github.com/css-modules/css-modules#composition) 같은 자세한 정보는 [CSS 모듈 스펙](https://github.com/css-modules/css-modules)을 참고하세요.
-
-### 사용자 정의 이름 주입
-
-하나의 `*.vue` 컴포넌트 내에 하나 이상의 `
-
-
-```
-
-### `css-loader` 쿼리 설정
-
-CSS 모듈은 [css-loader](https://github.com/webpack/css-loader)를 통해 처리됩니다. `
-
-
-
안녕
-
-```
-
-다음과 같이 변환됩니다.
-
-``` html
-
-
-
-
안녕
-
-```
-
-#### 참고사항
-
-1. 범위가 지정된 스타일과 범위가 지정되지 않은 스타일은 동일한 컴포넌트에 포함 할 수 있습니다.
-
- ``` html
-
-
-
- ```
-
-2. 하위 컴포넌트의 루트 노드는 상위 범위 CSS와 하위 범위 CSS의 영향을 받습니다.
-
-3. Partial은 범위가 지정된 스타일의 영향을 받지 않습니다.
-
-4. **범위가 지정된 스타일은 클래스의 필요성을 제거하는 것이 아닙니다**. 브라우저가 다양한 CSS 셀렉터를 렌더링하는 방식 때문에 `p { color: red }`는 범위(즉 속성 선택자와 결합될 때)가 지정될 때 몇 배는 더 느려집니다. `.example { color: red }`와 같이 클래스 또는 id를 대신 사용한다면 성능 이슈를 해결할 수 있습니다. [여기 플레이그라운드](http://stevesouders.com/efws/css-selectors/csscreate.php)에서 차이점을 테스트 할 수 있습니다.
-
-5. **하위 컴포넌트의 선택자 사용을 조심하세요!** 선택자 `.a .b`가 있는 CSS 규칙의 경우 `.a`와 일치하는 요소에 하위 컴포넌트가 포함되어 있을 경우 해당 하위 컴포넌트의 모든 `.b`가 CSS 규칙에 적용됩니다.
diff --git a/docs/kr/options.md b/docs/kr/options.md
deleted file mode 100644
index ba2219835..000000000
--- a/docs/kr/options.md
+++ /dev/null
@@ -1,157 +0,0 @@
-# 옵션 레퍼런스
-
-## Webpack 1 & 2 사용 방법의 차이점
-
-Webpack 1.x의 경우 Webpack 설정에 루트 `vue` 블럭을 추가합니다.
-
-``` js
-module.exports = {
- // ...
- vue: {
- // vue-loader 옵션
- }
-}
-```
-
-Webpack 2 (^2.1.0-beta.25)는 다음과 같습니다.
-
-``` js
-module.exports = {
- // ...
- module: {
- rules: [
- {
- test: /\.vue$/,
- loader: 'vue',
- options: {
- // vue-loader 옵션
- }
- }
- ]
- }
-}
-```
-
-### 로더
-
-- 타입: `Object`
-
- `*.vue` 파일의 언어 블럭에 사용할 Webpack 로더를 지정하는 객체입니다. 이 키는 특별히 지정된 경우 language block에 대한 `lang` 속성에 해당합니다. 각 타입에 대한 기본적인 `lang`은 다음과 같습니다.
-
- - ``: `html`
- - `
-
-
-```
-
-`vue-loader`는 파일을 파싱하고 각 언어 블럭을 추출한 다음 필요한 경우 다른 로더를 통해 파이프를 구성하고 `module.exports`가 Vue.js 옵션 객체인 CommonJS 모듈로 다시 합쳐줍니다.
-
-`vue-loader`는 언어 블럭에 `lang` 속성을 지정하여 CSS 전처리기 혹은 HTML 컴파일 언어를 사용할 수 있습니다. 예를 들어, 다음과 같이 컴포넌트에 SASS를 사용할 수 있습니다.
-
-``` html
-
-```
-
-자세한 내용은 [전처리기 사용하기](../configurations/pre-processors.md)에서 확인할 수 있습니다.
-
-### 언어 블록
-
-#### ``
-
-- 기본 언어: `html`.
-
-- 각 `*.vue` 파일은 하나의 `` 블럭을 포함 할 수 있습니다.
-
-- 내용은 문자열로 출력되어 컴파일된 Vue 컴포넌트의 `template` 옵션에 사용됩니다.
-
-#### `
-```
-
-`src`로 가져오기가 CommonJS `require()` 호출과 동일한 경로 확인 규칙을 따르기 때문에 주의해야 합니다. 즉, `./`로 시작해야하는 상대 경로를 의미하며 설치된 NPM 패키지에서 직접 리소스를 가져올 수 있습니다.
-
-``` html
-
-
diff --git a/example/Button.vue b/example/Button.vue
new file mode 100644
index 000000000..67ae8696c
--- /dev/null
+++ b/example/Button.vue
@@ -0,0 +1,32 @@
+
+
prop foo: {{ foo }}
+
+
+
+
+
+
+
+
+
+This component is fire. // <-- this should be logged
+
diff --git a/example/ScriptSetup.vue b/example/ScriptSetup.vue
new file mode 100644
index 000000000..71ed4753e
--- /dev/null
+++ b/example/ScriptSetup.vue
@@ -0,0 +1,32 @@
+
+
+
+