postcss.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. 'use strict'
  2. let CssSyntaxError = require('./css-syntax-error')
  3. let Declaration = require('./declaration')
  4. let LazyResult = require('./lazy-result')
  5. let Container = require('./container')
  6. let Processor = require('./processor')
  7. let stringify = require('./stringify')
  8. let fromJSON = require('./fromJSON')
  9. let Document = require('./document')
  10. let Warning = require('./warning')
  11. let Comment = require('./comment')
  12. let AtRule = require('./at-rule')
  13. let Result = require('./result.js')
  14. let Input = require('./input')
  15. let parse = require('./parse')
  16. let list = require('./list')
  17. let Rule = require('./rule')
  18. let Root = require('./root')
  19. let Node = require('./node')
  20. function postcss(...plugins) {
  21. if (plugins.length === 1 && Array.isArray(plugins[0])) {
  22. plugins = plugins[0]
  23. }
  24. return new Processor(plugins)
  25. }
  26. postcss.plugin = function plugin(name, initializer) {
  27. // eslint-disable-next-line no-console
  28. if (console && console.warn) {
  29. // eslint-disable-next-line no-console
  30. console.warn(
  31. name +
  32. ': postcss.plugin was deprecated. Migration guide:\n' +
  33. 'https://evilmartians.com/chronicles/postcss-8-plugin-migration'
  34. )
  35. if (process.env.LANG && process.env.LANG.startsWith('cn')) {
  36. /* c8 ignore next 7 */
  37. // eslint-disable-next-line no-console
  38. console.warn(
  39. name +
  40. ': 里面 postcss.plugin 被弃用. 迁移指南:\n' +
  41. 'https://www.w3ctech.com/topic/2226'
  42. )
  43. }
  44. }
  45. function creator(...args) {
  46. let transformer = initializer(...args)
  47. transformer.postcssPlugin = name
  48. transformer.postcssVersion = new Processor().version
  49. return transformer
  50. }
  51. let cache
  52. Object.defineProperty(creator, 'postcss', {
  53. get() {
  54. if (!cache) cache = creator()
  55. return cache
  56. }
  57. })
  58. creator.process = function (css, processOpts, pluginOpts) {
  59. return postcss([creator(pluginOpts)]).process(css, processOpts)
  60. }
  61. return creator
  62. }
  63. postcss.stringify = stringify
  64. postcss.parse = parse
  65. postcss.fromJSON = fromJSON
  66. postcss.list = list
  67. postcss.comment = defaults => new Comment(defaults)
  68. postcss.atRule = defaults => new AtRule(defaults)
  69. postcss.decl = defaults => new Declaration(defaults)
  70. postcss.rule = defaults => new Rule(defaults)
  71. postcss.root = defaults => new Root(defaults)
  72. postcss.document = defaults => new Document(defaults)
  73. postcss.CssSyntaxError = CssSyntaxError
  74. postcss.Declaration = Declaration
  75. postcss.Container = Container
  76. postcss.Processor = Processor
  77. postcss.Document = Document
  78. postcss.Comment = Comment
  79. postcss.Warning = Warning
  80. postcss.AtRule = AtRule
  81. postcss.Result = Result
  82. postcss.Input = Input
  83. postcss.Rule = Rule
  84. postcss.Root = Root
  85. postcss.Node = Node
  86. LazyResult.registerPostcss(postcss)
  87. module.exports = postcss
  88. postcss.default = postcss