postcss.js 2.5 KB

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