Ember / PostCSS / Tailwind - 在哪里解析指令?

Posted

技术标签:

【中文标题】Ember / PostCSS / Tailwind - 在哪里解析指令?【英文标题】:Ember / PostCSS / Tailwind - where do directives get parsed? 【发布时间】:2019-11-22 14:36:36 【问题描述】:

我已经组装了一个 ember、postcss 和 tailwind 的香草组合,在我的一生中,我无法理解为什么这段代码可以工作。

对于带有 postcss 和 tailwind 的通用 ember 应用程序:

ember new poc-tailwind --yarn
ember install ember-cli-postcss
yarn add tailwindcs

然后在ember-cli-build中配置postcss:

module.exports = function(defaults) 
  let app = new EmberApp(defaults, 
    postcssOptions: 
      compile: 
        plugins: [
          require('tailwindcss')
        ]
      
    
  );

  return app.toTree();
;

最后在 app.css 中:

@tailwind base;

@tailwind components;

@tailwind utilities;

再一次,奇怪的是这作品

谁能解释为什么这些指令有效?它们是如何粘在一起的?

【问题讨论】:

【参考方案1】:

好的,所有的“魔法”都在这里发生:

https://github.com/jeffjewiss/ember-cli-postcss/blob/58eb75fd351a73c1cea6ea40cfd7425659e6ac44/index.js

基本上,此文件使用 ember-cli 挂钩来自定义构建过程,以便 postcss 使用您指定的插件 (tailwindcs) 预处理您的 CSS 文件。

此文件中的代码还允许进行后处理和过滤,尽管您没有使用这些功能。

这些指令在构建时由 postcss 解析和执行,纯 CSS 交付到您的浏览器。

您无需了解此文件中发生的所有内容,只需知道代码就在那里并且是开源的,以备不时之需。

与 parcel 和 webpack 等模块捆绑器不同,ember-cli 和 broccoli 依赖 javascript 代码来完成大部分配置,而不是配置文件。结合约定优于配置,这可以让 ember-cli 感觉像“神奇”。

【讨论】:

太棒了-谢谢!我认为我未能理解的另一件事是指令(即@tailwind components;)是由tailwind编写的,具有被postcss使用的明确意图。

以上是关于Ember / PostCSS / Tailwind - 在哪里解析指令?的主要内容,如果未能解决你的问题,请参考以下文章

gulp:PostCSS 失败 - postcss 版本高于 postcss-import 的版本

错误:PostCSS 插件 autoprefixer 需要 PostCSS 8。更新 PostCSS 或降级此插件

postcss7和postcss8的差异

使用 postcss-cssnext 和 postcss-import

npm工具之postcss

vue-cli3 使用 postcss-pxtorem & postcss-px2rem