웹사이트 검색

자바스크립트 - Angular 11에서 Tailwindcss 2 스타일이 작동하지 않습니다


저는 새로운 Angular 11 프로젝트에서 Tailwindcss를 사용해 보고 있습니다. 다음과 같은 개발 패키지를 설치했습니다.

NOTE: Removed other packages for simplicity
"@angular-builders/custom-webpack": "^10.0.1",
"@angular-devkit/build-angular": "~0.1100.2",
"@angular/cli": "~11.0.2",
"@angular/compiler-cli": "~11.0.1",
"autoprefixer": "^10.0.2",
"postcss-import": "^13.0.0",
"postcss-loader": "^4.1.0",
"postcss-scss": "^3.0.4",
"tailwindcss": "^2.0.1",

webpack.config.js

module.exports = {
  module: {
    rules: [
      {
        test: /\.scss$/,
        loader: 'postcss-loader',
        options: {
          postcssOptions: {
            ident: 'postcss',
            syntax: 'postcss-scss',
            plugins: () => [
              require('postcss-import'),
              require('tailwindcss'),
              require('autoprefixer')
            ]
          }
        }
      }
    ]
  }
}

스타일.scss

@import "tailwindcss/base";
@import "tailwindcss/components";
@import "tailwindcss/utilities";

angular.json

"builder": "@angular-builders/custom-webpack:browser", //dev-server
"customWebpackConfig": { "path": "webpack.config.js" }

나는 이 코드를 app.component.html에 추가했지만 스타일을 인식하지 못하는 것 같습니다.

...... some codes not included
<div class="px-6 pb-4 space-x-2">
    <a href="https://angular.io" target="_blank" rel="noreferrer"
      class="inline-block bg-red-500 rounded-full px-3 py-1 text-sm font-semibold text-white hover:bg-red-700">
      #angular
    </a>
    <a href="https://tailwindcss.com" target="_blank" rel="noreferrer"
      class="inline-block bg-indigo-500 rounded-full px-3 py-1 text-sm font-semibold text-white hover:bg-indigo-700">
      #tailwind
    </a>
    <a href="https://notiz.dev" target="_blank" rel="noreferrer"
      class="inline-block bg-blue-200 rounded-full px-3 py-1 text-sm font-semibold text-gray-700 hover:bg-blue-400">
      #notiz
    </a>
  </div>

답변 #1

베타 버전 @angular-builders/custom-webpack으로 업데이트할 수 있습니다. angular.json의 customWebpackConfig 섹션이 이제 다음과 같이 변경되어야 합니다

 "customWebpackConfig": {
      "path": "./webpack.config.js",
      "mergeRules": {
           "module": {
              "rules": "append"
            }
      }
  }

당신의 로더들은 webpack.config.js와 같아야 합니다

let sass;
try {
  sass= require('node-sass');
} catch {
  sass= require('sass');
}

module.exports = {
  node: {
    fs: 'empty'
  },
  module: {
    rules: [
      {
        test: /\.scss$/,
        use: [
          {
            loader: 'postcss-loader',
            options: {
              postcssOptions: {
                ident: 'postcss',
                syntax: 'postcss-scss',
                plugins: [
                  "postcss-import",
                  "tailwindcss",
                  "autoprefixer"
                ]
              }
            }
          },
          {
            loader: 'sass-loader',
            options: {
              implementation: sass,
              sourceMap: false,
              sassOptions: {
                precision: 8
              }
            }
          }
        ]
      }
    ]
  }
};

angular-builders에서 이것에 대해 더 읽을 수 있습니다

또한 당신이 필요로 할 패키지들

  • "postcss": "^8.2.1"
  • "postcss-import": "^14.0.0"
  • "postcss-loader": "^4.1.0"
  • "postcss-scss": "^3.0.4"
  • "tailwindcss": "^2.0.2"
  • "autoprefixer": "^10.1.0"
  • "@angular-builders/custom-webpack": "^11.0.0-beta.4"

답변 #2

ngneat/tailwind는 Angular v11.2.0 이상에서는 작동하지 않습니다. Webpack이 tailwind를 로드하지 않기 때문에 스타일이 적용되지 않습니다. 이것 때문에 우리 팀이 총 12시간 이상을 허비했습니다. npm에서 Angular 버전이 "~11.2.0"으로 설정되어 있었고, 팀원 중 한 명의 로컬 캐시가 "11.1.x" 버전이었기 때문에 npm은 낮은 버전을 선택했고, ngneat 기반 설정은 작동하여 ngneat이 11.2.0에서도 작동한다는 잘못된 인상을 주었습니다. 문제는 우리의 설정에 있는 것이 아니라는 것처럼 보인 것입니다.

이 고난을 겪은 후, '실제 설치된 패키지 버전 확인'이라는 생각이 강화되었다.

npm install -D tailwindcss로 설치하세요

TailwindCSS 플러그인 설치(선택 사항):

npm i @tailwindcss/typography

npm i @tailwindcss/forms

일부 사람들은 CLI 또는 @angular-devkit/build-angular의 이전 버전을 사용하고 있습니다. package.json이 최소 버전 11.2.0 이상이거나 더 최신 버전(가능한 경우)인지 확인하세요.

워크스페이스나 프로젝트 루트에 TailwindCSS 설정 파일을 만드세요. 그 설정 파일의 이름은 tailwind.config.js로 하세요. 다음과 같이 생겼어야 합니다:

module.exports = {
    prefix: '',
    purge: {
      content: [
        './src/**/*.{html,ts}',
      ]
    },
    darkMode: 'class', // or 'media' or 'class'
    theme: {
      extend: {},
    },
    variants: {
      extend: {},
    },
    plugins: [require('@tailwindcss/forms'),require('@tailwindcss/typography')],
};

당신의 styles.scss 파일에 다음 TailwindCSS 가져오기를 추가하세요

@import 'tailwindcss/base';
@import 'tailwindcss/components';
@import 'tailwindcss/utilities';

만약 SCSS[.scss] 대신 CSS[.css]를 사용하고 있다면, 파일은 다음과 같이 보여야 합니다:

@tailwind base;
@tailwind components;
@tailwind utilities;

나는 여기 이 사람이 쓴 놀라운 글에서 이것을 가져왔습니다:

https://dev.to/angular/setup-tailwindcss-in-angular-the-easy-way-1i5l