vue-loader 是 webpack 中用來解析 .vue
的工具
了解 ".vue" 裡面如何使用 scss;PostCSS 怎麼配合工作?
// 流程
.vue scss > webpack - sass loader > css > webpack - postcss loader > css #
在 webpack 中,所有的预处理器需要匹配对应的 loader。
vue-loader 允许你使用其它 webpack loader 处理 Vue 组件 (.vue
) 的某一部分。
.vue
根據內部的標籤的 lang
属性自动推断出要使用的 loader (e.g. <style lang="sass">
)。
使用配置文件
因為 vue-loader 支持透過 postcss-loader 自动加载同一个配置文件(.postcssrc
or postcss.config.js
or package.json
中的 postcss
屬性範圍)。
postcss-loader 會用 cosmiconfig 的方式尋找這個 configuration object(配置文件)
這樣,你可以在由 postcss-loader 处理的「普通 CSS 文件」和 「*.vue
文件中的 CSS」 之间共享相同的配置,这是推荐的做法。
配合 postcss-loader 使用
因为 vue-loader 内部通过 PostCSS 处理其样式,你只需要对标准的 CSS 文件应用 postcss-loader 即可。
即專案中有 PostCSS 配置文件,就不用在 <style>
指定 lang="postcss"
。
如果没有 loader (通过 vue-loader 自身的 loaders 选项) 显式配置下列 PostCSS 扩展,
则它们只会简单的进行 vue-loader 的默认 PostCSS 转换: postcss
、pcss
、sugarss
、sss
。
inline OPtion
或者,你可以使用 vue-loader 的 postcss options
来为 .vue
文件指定配置。
// webpack.config.js
module.exports = {
// other options...
module: {
// `module.rules` is the same as `module.loaders` in 1.x
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
// `vue-loader` options goes here
options: {
// ...
postcss: [require('postcss-cssnext')()]
}
}
]
}
}
PostCSS 需要一個 configuration object 配置檔物件做運行的依據, 通常會用 cosmiconfig 方式尋找。
vue-loader 有三種方法使用 PostCSS:
vue-loader 内部通过 PostCSS 处理其样式,
lang="postcss"
。vue-loader 配合 postcss-loader 使用,因此只需要对标准的 CSS 文件应用 postcss-loader 即可。
.vue
預設透過 postcss-loader 輸出 CSS(即不用特別寫 lang="postcss"
)。
只需要對外部 css 檔案应用 postcss-loader 即可。
PostCSS 需要一份配置文件(configuration object), postcss-loader 會用 cosmiconfig 方式尋找。
或者,你可以使用 vue-loader 的 postcss 选项来为 .vue
文件指定配置。
用 vue-loader 的 option
来指定配置。
解释 (interpret) @import
和 url()
,会 import
/ require()
后再解析 (resolve) 它们。
基於 CSS 縮進,給 PostCSS 的語法糖: https://github.com/postcss/sugarss,如果要寫,就要設定解析方式為 sugarss
前端自動化工具,目前用到:
了解 ".vue" 裡面如何使用 scss;PostCSS 怎麼配合工作?
vue-loader 可以使用 webpack 的 loader 處理 Vue 组件的某一部分。 它会根据 lang 属性自动推断出要使用的 loader。
e.g. 要用 sass 編譯 <style>
,寫 <style lang="sass">
就可以編譯 sass。
但 vue-loader 預設使用 PostCSS 處理樣式(不需要特別寫 <style lang="postcss">
)
使用 PostCSS 和 lint 一樣,會先用 cosmiconfig 來找他所依據的 configuration object 配置檔物件。
文件建議用配置文件來搭配 postcss-loader,這樣「普通 CSS 文件」和 「*.vue 中的 CSS」之間,可共享相同的配置。