{"_id":"vue-loader-v16","_rev":"200580","name":"vue-loader-v16","description":"Non-official publishment, just for private learning, resource comes from official vue-loader's next branch, release is v16.0.0-beta.5","dist-tags":{"latest":"16.0.0-beta.5.4"},"maintainers":[{"name":"yujahua","email":"yujahua@163.com"}],"time":{"modified":"2021-06-03T12:31:44.000Z","created":"2020-08-25T10:57:44.042Z","16.0.0-beta.5.4":"2020-08-29T08:08:24.519Z","16.0.0-beta.5.3":"2020-08-25T11:16:30.988Z","16.0.0-beta.5.2":"2020-08-25T11:09:21.376Z","16.0.0-beta.5.1":"2020-08-25T11:00:22.997Z","16.0.0-beta.5":"2020-08-25T10:57:44.042Z"},"users":{},"author":{"name":"Evan You"},"repository":{"type":"git","url":"git+ssh://git@github.com/Yujahua/vue-loader-v16.git"},"versions":{"16.0.0-beta.5.4":{"name":"vue-loader-v16","version":"16.0.0-beta.5.4","description":"Non-official publishment, just for private learning, resource comes from official vue-loader's next branch, release is v16.0.0-beta.5","license":"MIT","author":{"name":"Evan You"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","build":"tsc","pretest":"tsc","test":"jest","dev-example":"webpack-dev-server --config example/webpack.config.js --inline --hot","build-example":"rm -rf example/dist && webpack --config example/webpack.config.js --env.prod","lint":"prettier --write --parser typescript \"{src,test}/**/*.ts\"","prepublishOnly":"tsc"},"repository":{"type":"git","url":"git+ssh://git@github.com/Yujahua/vue-loader-v16.git"},"bugs":{"url":"https://github.com/Yujahua/vue-loader-v16/issues"},"homepage":"https://github.com/Yujahua/vue-loader-v16/tree/next#readme","gitHooks":{"pre-commit":"lint-staged"},"lint-staged":{"*.js":["prettier --write","git add"],"*.ts":["prettier --parser=typescript --write","git add"]},"dependencies":{"@types/mini-css-extract-plugin":"^0.9.1","chalk":"^3.0.0","hash-sum":"^2.0.0","loader-utils":"^1.2.3","merge-source-map":"^1.1.0","source-map":"^0.6.1"},"devDependencies":{"@babel/core":"^7.7.7","@babel/preset-env":"^7.7.7","@types/estree":"^0.0.42","@types/hash-sum":"^1.0.0","@types/jest":"^25.2.1","@types/loader-utils":"^1.1.3","@types/webpack":"^4.41.0","@types/webpack-merge":"^4.1.5","@vue/compiler-sfc":"^3.0.0-rc.6","babel-loader":"^8.0.6","cache-loader":"^4.1.0","css-loader":"^3.3.2","file-loader":"^5.0.2","jest":"^26.4.1","lint-staged":"^9.5.0","memfs":"^3.1.2","mini-css-extract-plugin":"^0.8.0","prettier":"^1.19.1","pug":"^2.0.4","pug-plain-loader":"^1.0.0","stylus":"^0.54.7","stylus-loader":"^3.0.2","ts-jest":"^26.2.0","typescript":"^4.0.2","url-loader":"^3.0.0","vue":"^3.0.0-rc.6","webpack":"^4.41.2","webpack-cli":"^3.3.10","webpack-dev-server":"^3.9.0","webpack-merge":"^4.2.2","yorkie":"^2.0.0"},"jest":{"preset":"ts-jest","testEnvironment":"node","testPathIgnorePatterns":["<rootDir>/dist/","<rootDir>/node_modules/"]},"gitHead":"1c1e1bbb58f4845817a79d44471d56517be8f2a9","_id":"vue-loader-v16@16.0.0-beta.5.4","_nodeVersion":"10.14.0","_npmVersion":"6.14.8","dist":{"shasum":"8fbcf87dc69c9979ecd777adba4e8a0e7fd95a7e","size":13894,"noattachment":false,"key":"/vue-loader-v16/-/vue-loader-v16-16.0.0-beta.5.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/vue-loader-v16/download/vue-loader-v16-16.0.0-beta.5.4.tgz"},"maintainers":[{"name":"yujahua","email":"yujahua@163.com"}],"_npmUser":{"name":"yujahua","email":"yujahua@163.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-loader-v16_16.0.0-beta.5.4_1598688504370_0.18002082467303526"},"_hasShrinkwrap":false,"publish_time":1598688504519,"_cnpm_publish_time":1598688504519},"16.0.0-beta.5.3":{"name":"vue-loader-v16","version":"16.0.0-beta.5.3","description":"Non-official publishment, just for private learning, resource comes from official vue-loader's next branch, release is v16.0.0-beta.5","license":"MIT","author":{"name":"Evan You"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","build":"tsc","pretest":"tsc","test":"jest","dev-example":"webpack-dev-server --config example/webpack.config.js --inline --hot","build-example":"rm -rf example/dist && webpack --config example/webpack.config.js --env.prod","lint":"prettier --write --parser typescript \"{src,test}/**/*.ts\"","prepublishOnly":"tsc"},"gitHooks":{"pre-commit":"lint-staged"},"lint-staged":{"*.js":["prettier --write","git add"],"*.ts":["prettier --parser=typescript --write","git add"]},"dependencies":{"@types/mini-css-extract-plugin":"^0.9.1","chalk":"^3.0.0","hash-sum":"^2.0.0","loader-utils":"^1.2.3","merge-source-map":"^1.1.0","source-map":"^0.6.1"},"devDependencies":{"@babel/core":"^7.7.7","@babel/preset-env":"^7.7.7","@types/estree":"^0.0.42","@types/hash-sum":"^1.0.0","@types/jest":"^25.2.1","@types/loader-utils":"^1.1.3","@types/webpack":"^4.41.0","@types/webpack-merge":"^4.1.5","@vue/compiler-sfc":"^3.0.0-rc.6","babel-loader":"^8.0.6","cache-loader":"^4.1.0","css-loader":"^3.3.2","file-loader":"^5.0.2","jest":"^26.4.1","lint-staged":"^9.5.0","memfs":"^3.1.2","mini-css-extract-plugin":"^0.8.0","prettier":"^1.19.1","pug":"^2.0.4","pug-plain-loader":"^1.0.0","stylus":"^0.54.7","stylus-loader":"^3.0.2","ts-jest":"^26.2.0","typescript":"^4.0.2","url-loader":"^3.0.0","vue":"^3.0.0-rc.6","webpack":"^4.41.2","webpack-cli":"^3.3.10","webpack-dev-server":"^3.9.0","webpack-merge":"^4.2.2","yorkie":"^2.0.0"},"jest":{"preset":"ts-jest","testEnvironment":"node","testPathIgnorePatterns":["<rootDir>/dist/","<rootDir>/node_modules/"]},"gitHead":"ff469f157500fb8d68abc94eb305a68b7a08df7d","_id":"vue-loader-v16@16.0.0-beta.5.3","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"yujahua","email":"yujahua@163.com"},"dist":{"shasum":"f62c7e80d49a180ee86683fe64977eb6c8a4788e","size":13174,"noattachment":false,"key":"/vue-loader-v16/-/vue-loader-v16-16.0.0-beta.5.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/vue-loader-v16/download/vue-loader-v16-16.0.0-beta.5.3.tgz"},"maintainers":[{"name":"yujahua","email":"yujahua@163.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-loader-v16_16.0.0-beta.5.3_1598354190880_0.585323234323561"},"_hasShrinkwrap":false,"publish_time":1598354190988,"_cnpm_publish_time":1598354190988},"16.0.0-beta.5.2":{"name":"vue-loader-v16","version":"16.0.0-beta.5.2","description":"Non-official publishment, just for private learning, resource comes from official vue-loader's next branch, release is v16.0.0-beta.5","license":"MIT","author":{"name":"Evan You"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","build":"tsc","pretest":"tsc","test":"jest","dev-example":"webpack-dev-server --config example/webpack.config.js --inline --hot","build-example":"rm -rf example/dist && webpack --config example/webpack.config.js --env.prod","lint":"prettier --write --parser typescript \"{src,test}/**/*.ts\"","prepublishOnly":"tsc"},"gitHooks":{"pre-commit":"lint-staged"},"lint-staged":{"*.js":["prettier --write","git add"],"*.ts":["prettier --parser=typescript --write","git add"]},"dependencies":{"@types/mini-css-extract-plugin":"^0.9.1","chalk":"^3.0.0","hash-sum":"^2.0.0","loader-utils":"^1.2.3","merge-source-map":"^1.1.0","source-map":"^0.6.1"},"devDependencies":{"@babel/core":"^7.7.7","@babel/preset-env":"^7.7.7","@types/estree":"^0.0.42","@types/hash-sum":"^1.0.0","@types/jest":"^25.2.1","@types/loader-utils":"^1.1.3","@types/webpack":"^4.41.0","@types/webpack-merge":"^4.1.5","@vue/compiler-sfc":"^3.0.0-rc.6","babel-loader":"^8.0.6","cache-loader":"^4.1.0","css-loader":"^3.3.2","file-loader":"^5.0.2","jest":"^26.4.1","lint-staged":"^9.5.0","memfs":"^3.1.2","mini-css-extract-plugin":"^0.8.0","prettier":"^1.19.1","pug":"^2.0.4","pug-plain-loader":"^1.0.0","stylus":"^0.54.7","stylus-loader":"^3.0.2","ts-jest":"^26.2.0","typescript":"^4.0.2","url-loader":"^3.0.0","vue":"^3.0.0-rc.6","webpack":"^4.41.2","webpack-cli":"^3.3.10","webpack-dev-server":"^3.9.0","webpack-merge":"^4.2.2","yorkie":"^2.0.0"},"jest":{"preset":"ts-jest","testEnvironment":"node","testPathIgnorePatterns":["<rootDir>/dist/","<rootDir>/node_modules/"]},"gitHead":"ff469f157500fb8d68abc94eb305a68b7a08df7d","_id":"vue-loader-v16@16.0.0-beta.5.2","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"yujahua","email":"yujahua@163.com"},"dist":{"shasum":"1a6ec263e07f3a25fea60f903c3b8da15f8de271","size":13172,"noattachment":false,"key":"/vue-loader-v16/-/vue-loader-v16-16.0.0-beta.5.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/vue-loader-v16/download/vue-loader-v16-16.0.0-beta.5.2.tgz"},"maintainers":[{"name":"yujahua","email":"yujahua@163.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-loader-v16_16.0.0-beta.5.2_1598353761221_0.09622593938800206"},"_hasShrinkwrap":false,"publish_time":1598353761376,"_cnpm_publish_time":1598353761376},"16.0.0-beta.5.1":{"name":"vue-loader-v16","version":"16.0.0-beta.5.1","description":"Non-official publishment, just for private learning, resource comes from official vue-loader's next branch, release is v16.0.0-beta.5","license":"MIT","author":{"name":"Evan You"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","build":"tsc","pretest":"tsc","test":"jest","dev-example":"webpack-dev-server --config example/webpack.config.js --inline --hot","build-example":"rm -rf example/dist && webpack --config example/webpack.config.js --env.prod","lint":"prettier --write --parser typescript \"{src,test}/**/*.ts\"","prepublishOnly":"tsc"},"gitHooks":{"pre-commit":"lint-staged"},"lint-staged":{"*.js":["prettier --write","git add"],"*.ts":["prettier --parser=typescript --write","git add"]},"dependencies":{"@types/mini-css-extract-plugin":"^0.9.1","chalk":"^3.0.0","hash-sum":"^2.0.0","loader-utils":"^1.2.3","merge-source-map":"^1.1.0","source-map":"^0.6.1"},"devDependencies":{"@babel/core":"^7.7.7","@babel/preset-env":"^7.7.7","@types/estree":"^0.0.42","@types/hash-sum":"^1.0.0","@types/jest":"^25.2.1","@types/loader-utils":"^1.1.3","@types/webpack":"^4.41.0","@types/webpack-merge":"^4.1.5","@vue/compiler-sfc":"^3.0.0-rc.6","babel-loader":"^8.0.6","cache-loader":"^4.1.0","css-loader":"^3.3.2","file-loader":"^5.0.2","jest":"^26.4.1","lint-staged":"^9.5.0","memfs":"^3.1.2","mini-css-extract-plugin":"^0.8.0","prettier":"^1.19.1","pug":"^2.0.4","pug-plain-loader":"^1.0.0","stylus":"^0.54.7","stylus-loader":"^3.0.2","ts-jest":"^26.2.0","typescript":"^4.0.2","url-loader":"^3.0.0","vue":"^3.0.0-rc.6","webpack":"^4.41.2","webpack-cli":"^3.3.10","webpack-dev-server":"^3.9.0","webpack-merge":"^4.2.2","yorkie":"^2.0.0"},"jest":{"preset":"ts-jest","testEnvironment":"node","testPathIgnorePatterns":["<rootDir>/dist/","<rootDir>/node_modules/"]},"gitHead":"ff469f157500fb8d68abc94eb305a68b7a08df7d","_id":"vue-loader-v16@16.0.0-beta.5.1","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"yujahua","email":"yujahua@163.com"},"dist":{"shasum":"64890285847511d3df95cde5f30b375972834f50","size":13178,"noattachment":false,"key":"/vue-loader-v16/-/vue-loader-v16-16.0.0-beta.5.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/vue-loader-v16/download/vue-loader-v16-16.0.0-beta.5.1.tgz"},"maintainers":[{"name":"yujahua","email":"yujahua@163.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-loader-v16_16.0.0-beta.5.1_1598353222854_0.5476444066505433"},"_hasShrinkwrap":false,"publish_time":1598353222997,"_cnpm_publish_time":1598353222997},"16.0.0-beta.5":{"name":"vue-loader-v16","version":"16.0.0-beta.5","description":"Non-official publishment, just for private learning, resource comes from official vue-loader's next branch, release is v16.0.0-beta.5","license":"MIT","author":{"name":"Evan You"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","build":"tsc","pretest":"tsc","test":"jest","dev-example":"webpack-dev-server --config example/webpack.config.js --inline --hot","build-example":"rm -rf example/dist && webpack --config example/webpack.config.js --env.prod","lint":"prettier --write --parser typescript \"{src,test}/**/*.ts\"","prepublishOnly":"tsc"},"gitHooks":{"pre-commit":"lint-staged"},"lint-staged":{"*.js":["prettier --write","git add"],"*.ts":["prettier --parser=typescript --write","git add"]},"dependencies":{"@types/mini-css-extract-plugin":"^0.9.1","chalk":"^3.0.0","hash-sum":"^2.0.0","loader-utils":"^1.2.3","merge-source-map":"^1.1.0","source-map":"^0.6.1"},"devDependencies":{"@babel/core":"^7.7.7","@babel/preset-env":"^7.7.7","@types/estree":"^0.0.42","@types/hash-sum":"^1.0.0","@types/jest":"^25.2.1","@types/loader-utils":"^1.1.3","@types/webpack":"^4.41.0","@types/webpack-merge":"^4.1.5","@vue/compiler-sfc":"^3.0.0-rc.6","babel-loader":"^8.0.6","cache-loader":"^4.1.0","css-loader":"^3.3.2","file-loader":"^5.0.2","jest":"^26.4.1","lint-staged":"^9.5.0","memfs":"^3.1.2","mini-css-extract-plugin":"^0.8.0","prettier":"^1.19.1","pug":"^2.0.4","pug-plain-loader":"^1.0.0","stylus":"^0.54.7","stylus-loader":"^3.0.2","ts-jest":"^26.2.0","typescript":"^4.0.2","url-loader":"^3.0.0","vue":"^3.0.0-rc.6","webpack":"^4.41.2","webpack-cli":"^3.3.10","webpack-dev-server":"^3.9.0","webpack-merge":"^4.2.2","yorkie":"^2.0.0"},"jest":{"preset":"ts-jest","testEnvironment":"node","testPathIgnorePatterns":["<rootDir>/dist/","<rootDir>/node_modules/"]},"gitHead":"ff469f157500fb8d68abc94eb305a68b7a08df7d","_id":"vue-loader-v16@16.0.0-beta.5","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"yujahua","email":"yujahua@163.com"},"dist":{"shasum":"4dc4993a1c01d5aaceb5b218dc59a82d53d53a56","size":13177,"noattachment":false,"key":"/vue-loader-v16/-/vue-loader-v16-16.0.0-beta.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/vue-loader-v16/download/vue-loader-v16-16.0.0-beta.5.tgz"},"maintainers":[{"name":"yujahua","email":"yujahua@163.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-loader-v16_16.0.0-beta.5_1598353063937_0.4401904425644432"},"_hasShrinkwrap":false,"publish_time":1598353064042,"_cnpm_publish_time":1598353064042}},"readme":"# vue-loader [![Build Status](https://circleci.com/gh/vuejs/vue-loader/tree/next.svg?style=shield)](https://circleci.com/gh/vuejs/vue-loader/tree/next) [![Windows Build status](https://ci.appveyor.com/api/projects/status/8cdonrkbg6m4k1tm/branch/next?svg=true)](https://ci.appveyor.com/project/yyx990803/vue-loader/branch/next)\r\n\r\n> webpack loader for Vue Single-File Components\r\n\r\n- [Documentation](https://vue-loader.vuejs.org)\r\n\r\n## Attention\r\n\r\n  Non-official publishment, just for private learning, resource comes from official vue-loader's next branch, release is v16.0.0-beta.5.\r\n\r\n## Why I Use My `vue-loader-v16` For Vue 3?\r\n\r\nThe npm version made it. But now the reason has gone.\r\n\r\n  The command to upgrade NPM is：\r\n  ```sh\r\n  npm i -g npm\r\n  ```\r\n  Yes, now you just need to upgrade npm version，and then run `npm run serve` will be ok.\r\n  \r\n  In vue official [README.md](https://github.com/vuejs/vue-next), it syas:\r\n  \r\n  As of v4.5.0, use `@vue/cli` built-in option to choose Vue 3 preset when creating a vue 3 project, like this:\r\n  ```sh\r\n  vue create <your vue 3 project name>\r\n  ``` \r\n\r\n  So when you start a vue 3 project by cli command, you need it, upgrade npm at first.\r\n  \r\n  My experience is:\r\n\r\n  When I start a vue 3 project [`vuenext-vuecli-vite`](https://github.com/Yujahua/vuenext-vuecli-vite), but it failed. The reason told me it depend on a module: `vue-loader-v16`, then I publish it on `npm` from official resource `vue-loader`'s branch `next`,  lastest release `tag` is v16.0.0-beta.5. But now I realize that the error caused by npm low version. Older npm cannot understand the config:  \r\n  \r\n  `{\"vue-loader-v16\": \"npm:vue-loader@^16.0.0-beta.3}`,\r\n\r\nso the folder `vue-loader-v16` dependency module cannot be created, but new npm provides the function. Now my npm is `v6.14.8`.\r\n\r\n## What is Vue Loader?\r\n\r\n`vue-loader` is a loader for [webpack](https://webpack.js.org/) that allows you to author Vue components in a format called [Single-File Components (SFCs)](./docs/spec.md):\r\n\r\n``` vue\r\n<template>\r\n  <div class=\"example\">{{ msg }}</div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  data () {\r\n    return {\r\n      msg: 'Hello world!'\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n.example {\r\n  color: red;\r\n}\r\n</style>\r\n```\r\n\r\nThere are many cool features provided by `vue-loader`:\r\n\r\n- Allows using other webpack loaders for each part of a Vue component, for example Sass for `<style>` and Pug for `<template>`;\r\n- Allows custom blocks in a `.vue` file that can have custom loader chains applied to them;\r\n- Treat static assets referenced in `<style>` and `<template>` as module dependencies and handle them with webpack loaders;\r\n- Simulate scoped CSS for each component;\r\n- State-preserving hot-reloading during development.\r\n\r\nIn a nutshell, the combination of webpack and `vue-loader` gives you a modern, flexible and extremely powerful front-end workflow for authoring Vue.js applications.\r\n\r\n## How It Works\r\n\r\n> The following section is for maintainers and contributors who are interested in the internal implementation details of `vue-loader`, and is **not** required knowledge for end users.\r\n\r\n`vue-loader` is not a simple source transform loader. It handles each language blocks inside an SFC with its own dedicated loader chain (you can think of each block as a \"virtual module\"), and finally assembles the blocks together into the final module. Here's a brief overview of how the whole thing works:\r\n\r\n1. `vue-loader` parses the SFC source code into an *SFC Descriptor* using `@vue/compiler-sfc`. It then generates an import for each language block so the actual returned module code looks like this:\r\n\r\n    ``` js\r\n    // code returned from the main loader for 'source.vue'\r\n\r\n    // import the <template> block\r\n    import render from 'source.vue?vue&type=template'\r\n    // import the <script> block\r\n    import script from 'source.vue?vue&type=script'\r\n    export * from 'source.vue?vue&type=script'\r\n    // import <style> blocks\r\n    import 'source.vue?vue&type=style&index=1'\r\n\r\n    script.render = render\r\n    export default script\r\n    ```\r\n\r\n    Notice how the code is importing `source.vue` itself, but with different request queries for each block.\r\n\r\n2. We want the content in `script` block to be treated like `.js` files (and if it's `<script lang=\"ts\">`, we want to to be treated like `.ts` files). Same for other language blocks. So we want webpack to apply any configured module rules that matches `.js` also to requests that look like `source.vue?vue&type=script`. This is what `VueLoaderPlugin` (`src/plugins.ts`) does: for each module rule in the webpack config, it creates a modified clone that targets corresponding Vue language block requests.\r\n\r\n    Suppose we have configured `babel-loader` for all `*.js` files. That rule will be cloned and applied to Vue SFC `<script>` blocks as well. Internally to webpack, a request like\r\n\r\n    ``` js\r\n    import script from 'source.vue?vue&type=script'\r\n    ```\r\n\r\n    Will expand to:\r\n\r\n    ``` js\r\n    import script from 'babel-loader!vue-loader!source.vue?vue&type=script'\r\n    ```\r\n\r\n    Notice the `vue-loader` is also matched because `vue-loader` are applied to `.vue` files.\r\n\r\n    Similarly, if you have configured `style-loader` + `css-loader` + `sass-loader` for `*.scss` files:\r\n\r\n    ``` html\r\n    <style scoped lang=\"scss\">\r\n    ```\r\n\r\n    Will be returned by `vue-loader` as:\r\n\r\n    ``` js\r\n    import 'source.vue?vue&type=style&index=1&scoped&lang=scss'\r\n    ```\r\n\r\n    And webpack will expand it to:\r\n\r\n    ``` js\r\n    import 'style-loader!css-loader!sass-loader!vue-loader!source.vue?vue&type=style&index=1&scoped&lang=scss'\r\n    ```\r\n\r\n3. When processing the expanded requests, the main `vue-loader` will get invoked again. This time though, the loader notices that the request has queries and is targeting a specific block only. So it selects (`src/select.ts`) the inner content of the target block and passes it on to the loaders matched after it.\r\n\r\n4. For the `<script>` block, this is pretty much it. For `<template>` and `<style>` blocks though, a few extra tasks need to be performed:\r\n\r\n    - We need to compile the template using the Vue template compiler;\r\n    - We need to post-process the CSS in `<style scoped>` blocks, **after** `css-loader` but **before** `style-loader`.\r\n\r\n    Technically, these are additional loaders (`src/templateLoader.ts` and `src/stylePostLoader.ts`) that need to be injected into the expanded loader chain. It would be very complicated if the end users have to configure this themselves, so `VueLoaderPlugin` also injects a global [Pitching Loader](https://webpack.js.org/api/loaders/#pitching-loader) (`src/pitcher.ts`) that intercepts Vue `<template>` and `<style>` requests and injects the necessary loaders. The final requests look like the following:\r\n\r\n    ``` js\r\n    // <template lang=\"pug\">\r\n    import 'vue-loader/template-loader!pug-loader!source.vue?vue&type=template'\r\n\r\n    // <style scoped lang=\"scss\">\r\n    import 'style-loader!vue-loader/style-post-loader!css-loader!sass-loader!vue-loader!source.vue?vue&type=style&index=1&scoped&lang=scss'\r\n    ```\r\n\r\n## Maybe Issues\r\n\r\n  As running `npm install --production` to install production dependency modules, the `./src` files throw none import syntax. But if I use `@vue/cli` 4.5+ to create a vue app, after installed, it works well without errors.\r\n","_attachments":{},"homepage":"https://github.com/Yujahua/vue-loader-v16/tree/next#readme","bugs":{"url":"https://github.com/Yujahua/vue-loader-v16/issues"},"license":"MIT"}