簡體   English   中英

如何將 postcss.plugin 遷移到 postCSS 8 格式

[英]How to migrate postcss.plugin to postCSS 8 format

我正在嘗試將舊的 postCSS 插件遷移到新版本以使單元測試成功。 我的 index.js 看起來像這樣:

const postcss = require('postcss')

const params = require('./lib/params')
const formatAtRules = require('./lib/formatAtRules')
const formatOrder = require('./lib/formatOrder')
const formatRules = require('./lib/formatRules')
const formatComments = require('./lib/formatComments')
const formatSassVariables = require('./lib/formatSassVariables')

const stylefmt = postcss.plugin('stylefmt', function (options) {
  var paramer = params(options)
  return function (root, result) {
    return paramer(root, result).then(function (params) {
      if(params) {
        formatComments(root, params)
        formatAtRules(root, params)
        formatRules(root, params)
        formatSassVariables(root, params)
        // order should be the last to prevent empty line collapse in order rules
        formatOrder(root, params)
      }
    }).catch(function (err) {
      console.error(err.stack)
    })
  }
})

module.exports = stylefmt

運行tape test/*.js |faucet時,這會在控制台中引發這樣的錯誤:

Error: postcss.plugin was deprecated. Migration guide: https://evilmartians.com/chronicles/postcss-8-plugin-migration 
    ---
      operator: error
      at: <anonymous> (/Users/rolle/Projects/stylefmt/test/cli.js:11:9)
      stack: |-
        Error: postcss.plugin was deprecated. Migration guide:
        https://evilmartians.com/chronicles/postcss-8-plugin-migration
        
            at ChildProcess.<anonymous> (/Users/rolle/Projects/stylefmt/test/cli.js:151:16)
            at ChildProcess.emit (events.js:198:13)
            at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
    ...

我對 JavaScript 端的 postCSS 插件和單元測試有點陌生。 我曾嘗試使用 遷移指南但無濟於事。 那么,如何將這篇文章轉換為 postCSS 8 格式以便測試通過? 這是我的回購: https : //github.com/ronilaukkarinen/stylefmt

回答我自己的問題。 終於發現有人用不同的插件做了同樣的事情,在這里提示一下

最終代碼:

const postcss = require('postcss')

const params = require('./lib/params')
const formatAtRules = require('./lib/formatAtRules')
const formatOrder = require('./lib/formatOrder')
const formatRules = require('./lib/formatRules')
const formatComments = require('./lib/formatComments')
const formatSassVariables = require('./lib/formatSassVariables')

module.exports = function (options) {
  var paramer = params(options)
  return {
    postcssPlugin: 'stylefmt',
    Once: function Once (root, _ref) {
      var result = _ref.result

      return paramer(root, result).then(function (params) {
        if(params) {
          formatComments(root, params)
          formatAtRules(root, params)
          formatRules(root, params)
          formatSassVariables(root, params)
          // order should be the last to prevent empty line collapse in order rules
          formatOrder(root, params)
        }
      }).catch(function (err) {
        console.error(err.stack)
      })
    }
  }
}

module.exports.postcss = true

這使得測試通過。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM