mirror of
https://github.com/tailwindlabs/tailwindcss.git
synced 2025-12-08 21:36:08 +00:00
202 lines
4.1 KiB
JavaScript
202 lines
4.1 KiB
JavaScript
import fs from 'fs'
|
|
import path from 'path'
|
|
import postcss from 'postcss'
|
|
import tailwind from '../src/index'
|
|
import config from '../stubs/defaultConfig.stub.js'
|
|
import processPlugins from '../src/util/processPlugins'
|
|
import runInTempDirectory from '../jest/runInTempDirectory'
|
|
|
|
function css(nodes) {
|
|
return postcss.root({ nodes }).toString()
|
|
}
|
|
|
|
it('generates the right CSS in IE11 mode', () => {
|
|
const inputPath = path.resolve(`${__dirname}/fixtures/tailwind-input.css`)
|
|
const input = fs.readFileSync(inputPath, 'utf8')
|
|
|
|
return postcss([tailwind({ ...config, target: 'ie11' })])
|
|
.process(input, { from: inputPath })
|
|
.then(result => {
|
|
const expected = fs.readFileSync(
|
|
path.resolve(`${__dirname}/fixtures/tailwind-output-ie11.css`),
|
|
'utf8'
|
|
)
|
|
|
|
expect(result.css).toBe(expected)
|
|
})
|
|
})
|
|
|
|
test('plugins can request the target for a specific plugin key', () => {
|
|
const { utilities } = processPlugins(
|
|
[
|
|
function({ addUtilities, target }) {
|
|
addUtilities({
|
|
'.testA': {
|
|
target: target('testPluginA'),
|
|
},
|
|
})
|
|
},
|
|
function({ addUtilities, target }) {
|
|
addUtilities({
|
|
'.testB': {
|
|
target: target('testPluginB'),
|
|
},
|
|
})
|
|
},
|
|
function({ addUtilities, target }) {
|
|
addUtilities({
|
|
'.testC': {
|
|
target: target('testPluginC'),
|
|
},
|
|
})
|
|
},
|
|
],
|
|
{
|
|
...config,
|
|
target: [
|
|
'ie11',
|
|
{
|
|
testPluginA: 'modern',
|
|
testPluginB: 'relaxed',
|
|
},
|
|
],
|
|
}
|
|
)
|
|
|
|
expect(css(utilities)).toMatchCss(`
|
|
@layer utilities {
|
|
@variants {
|
|
.testA {
|
|
target: modern
|
|
}
|
|
}
|
|
}
|
|
@layer utilities {
|
|
@variants {
|
|
.testB {
|
|
target: relaxed
|
|
}
|
|
}
|
|
}
|
|
@layer utilities {
|
|
@variants {
|
|
.testC {
|
|
target: ie11
|
|
}
|
|
}
|
|
}
|
|
`)
|
|
})
|
|
|
|
test('browserslist target is translated to a target preset', () => {
|
|
return runInTempDirectory(() => {
|
|
fs.writeFileSync(
|
|
path.resolve('./.browserslistrc'),
|
|
`
|
|
last 2 versions
|
|
IE 11
|
|
`
|
|
)
|
|
const { utilities } = processPlugins(
|
|
[
|
|
function({ addUtilities, target }) {
|
|
addUtilities({
|
|
'.test': {
|
|
target: target('testPlugin'),
|
|
},
|
|
})
|
|
},
|
|
],
|
|
{
|
|
...config,
|
|
target: 'browserslist',
|
|
}
|
|
)
|
|
|
|
expect(css(utilities)).toMatchCss(`
|
|
@layer utilities {
|
|
@variants {
|
|
.test {
|
|
target: ie11
|
|
}
|
|
}
|
|
}
|
|
`)
|
|
|
|
return Promise.resolve()
|
|
})
|
|
})
|
|
|
|
test('browserslist target is translated to a target preset with overrides', () => {
|
|
return runInTempDirectory(() => {
|
|
fs.writeFileSync(
|
|
path.resolve('./.browserslistrc'),
|
|
`
|
|
last 2 versions
|
|
IE 11
|
|
`
|
|
)
|
|
const { utilities } = processPlugins(
|
|
[
|
|
function({ addUtilities, target }) {
|
|
addUtilities({
|
|
'.testA': {
|
|
target: target('testPluginA'),
|
|
},
|
|
})
|
|
},
|
|
function({ addUtilities, target }) {
|
|
addUtilities({
|
|
'.testB': {
|
|
target: target('testPluginB'),
|
|
},
|
|
})
|
|
},
|
|
function({ addUtilities, target }) {
|
|
addUtilities({
|
|
'.testC': {
|
|
target: target('testPluginC'),
|
|
},
|
|
})
|
|
},
|
|
],
|
|
{
|
|
...config,
|
|
target: [
|
|
'browserslist',
|
|
{
|
|
testPluginA: 'modern',
|
|
testPluginB: 'relaxed',
|
|
},
|
|
],
|
|
}
|
|
)
|
|
|
|
expect(css(utilities)).toMatchCss(`
|
|
@layer utilities {
|
|
@variants {
|
|
.testA {
|
|
target: modern
|
|
}
|
|
}
|
|
}
|
|
@layer utilities {
|
|
@variants {
|
|
.testB {
|
|
target: relaxed
|
|
}
|
|
}
|
|
}
|
|
@layer utilities {
|
|
@variants {
|
|
.testC {
|
|
target: ie11
|
|
}
|
|
}
|
|
}
|
|
`)
|
|
|
|
return Promise.resolve()
|
|
})
|
|
})
|