Created
May 31, 2019 15:44
-
-
Save dephiros/4d2519de027b60849f0831ede4633fce to your computer and use it in GitHub Desktop.
Webpack + Sapper + Tailwind
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"scripts": { | |
"dev": "sapper dev", | |
"format:check": "prettier --check './**/*.{js,ts,css,html,svelte}'", | |
"format": "prettier --write './**/*.{js,ts,css,html,svelte}'", | |
"build": "NODE_ENV=production sapper build", | |
"export": "NODE_ENV=production sapper export", | |
"start": "node __sapper__/build", | |
"cy:run": "cypress run", | |
"cy:open": "cypress open", | |
"test": "run-p --race dev cy:run", | |
}, | |
"dependencies": { | |
"@fortawesome/free-regular-svg-icons": "^5.8.2", | |
"@fortawesome/free-solid-svg-icons": "^5.8.2", | |
"fa-svelte": "^3.0.0" | |
}, | |
"devDependencies": { | |
"@fullhuman/postcss-purgecss": "^1.2.0", | |
"@tailwindcss/custom-forms": "^0.1.4", | |
"compression": "^1.7.1", | |
"css-loader": "^2.1.1", | |
"cssnano": "^4.1.10", | |
"firebase-tools": "^6.10.0", | |
"isomorphic-style-loader": "^5.0.1", | |
"mini-css-extract-plugin": "^0.6.0", | |
"npm-run-all": "^4.1.5", | |
"polka": "^0.5.0", | |
"postcss": "^7.0.16", | |
"postcss-extend": "^1.0.5", | |
"postcss-import": "^12.0.1", | |
"postcss-loader": "^3.0.0", | |
"postcss-preset-env": "^6.6.0", | |
"prettier": "^1.17.1", | |
"prettier-plugin-svelte": "^0.6.0", | |
"purgecss-from-svelte": "^1.1.1", | |
"sapper": "^0.27.0", | |
"sirv": "^0.4.0", | |
"svelte": "^3.0.0", | |
"svelte-loader": "^2.9.0", | |
"svelte-preprocess": "^2.9.0", | |
"tailwindcss": "^1.0.1", | |
"webpack": "^4.32" | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const purgecss = require('@fullhuman/postcss-purgecss'); | |
const purgeSvelte = require('purgecss-from-svelte'); | |
const env = process.env.NODE_ENV; | |
// Custom PurgeCSS extractor for Tailwind that allows special characters in | |
// class names. | |
// | |
// https://github.com/FullHuman/purgecss#extractor | |
class TailwindExtractor { | |
static extract(content) { | |
return content.match(/[A-Za-z0-9-_:\/]+/g) || []; | |
} | |
} | |
module.exports = { | |
plugins: [ | |
require('postcss-import')(), | |
require('postcss-preset-env')({ | |
browsers: 'last 2 versions', | |
}), | |
require('tailwindcss')('./tailwind.config.js'), | |
require('postcss-extend')(), | |
require('autoprefixer')(), | |
...(env !== 'production' | |
? [] | |
: [ | |
purgecss({ | |
content: ['**/*.html'], | |
css: ['**/*.css'], | |
extractors: [ | |
{ | |
extractor: purgeSvelte, | |
extensions: ['svelte'], | |
}, | |
{ | |
extractor: TailwindExtractor, | |
// Specify the file extensions to include when scanning for | |
// class names. | |
extensions: ['html'], | |
}, | |
], | |
}), | |
require('cssnano')({ preset: 'default' }), | |
]), | |
], | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const defaultTheme = require('tailwindcss/defaultTheme'); | |
module.exports = { | |
theme: { | |
}, | |
variants: { | |
// Some useful comment | |
}, | |
plugins: [ | |
// Some useful comment | |
], | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const webpack = require('webpack'); | |
const config = require('sapper/config/webpack.js'); | |
const pkg = require('./package.json'); | |
const autoPreprocess = require('svelte-preprocess'); | |
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); | |
const mode = process.env.NODE_ENV; | |
console.log(mode); | |
const dev = mode === 'development'; | |
const extensions = ['.mjs', '.js', '.json', '.svelte', '.html']; | |
const mainFields = ['svelte', 'module', 'browser', 'main']; | |
const cssConfig = { | |
test: /\.(sa|sc|c)ss$/, | |
exclude: /node_modules/, | |
use: [ | |
'isomorphic-style-loader', | |
MiniCssExtractPlugin.loader, | |
'css-loader', | |
'postcss-loader', | |
], | |
}; | |
const sveltPreprocess = autoPreprocess({ | |
postcss: true, | |
scss: false, | |
stylus: false, | |
typescript: false, | |
coffeescript: false, | |
less: false, | |
pug: false, | |
}); | |
module.exports = { | |
client: { | |
entry: config.client.entry(), | |
output: config.client.output(), | |
resolve: { extensions, mainFields }, | |
module: { | |
rules: [ | |
cssConfig, | |
{ | |
test: /\.(svelte|html)$/, | |
use: { | |
loader: 'svelte-loader', | |
options: { | |
preprocess: sveltPreprocess, | |
dev, | |
hydratable: true, | |
hotReload: false, // pending https://github.com/sveltejs/svelte/issues/2377 | |
}, | |
}, | |
}, | |
], | |
}, | |
mode, | |
plugins: [ | |
// pending https://github.com/sveltejs/svelte/issues/2377 | |
// dev && new webpack.HotModuleReplacementPlugin(), | |
new webpack.DefinePlugin({ | |
'process.browser': true, | |
'process.env.NODE_ENV': JSON.stringify(mode), | |
}), | |
new MiniCssExtractPlugin({ | |
filename: '[name].[hash:5].css', | |
chunkFilename: '[id].[hash:5].css', | |
}), | |
].filter(Boolean), | |
devtool: dev && 'inline-source-map', | |
}, | |
server: { | |
entry: config.server.entry(), | |
output: config.server.output(), | |
target: 'node', | |
resolve: { extensions, mainFields }, | |
externals: Object.keys(pkg.dependencies).concat('encoding'), | |
module: { | |
rules: [ | |
cssConfig, | |
{ | |
test: /\.(svelte|html)$/, | |
use: { | |
loader: 'svelte-loader', | |
options: { | |
preprocess: sveltPreprocess, | |
css: false, | |
generate: 'ssr', | |
dev, | |
}, | |
}, | |
}, | |
], | |
}, | |
plugins: [ | |
new MiniCssExtractPlugin({ | |
filename: '[name].[hash:5].css', | |
chunkFilename: '[id].[hash:5].css', | |
}), | |
].filter(Boolean), | |
mode: process.env.NODE_ENV, | |
performance: { | |
hints: false, // it doesn't matter if server.js is large | |
}, | |
}, | |
serviceworker: { | |
entry: config.serviceworker.entry(), | |
output: config.serviceworker.output(), | |
mode: process.env.NODE_ENV, | |
}, | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It brakes.Error: No PostCSS Config found in: /Users/lucian.voju/projects/pbk/pb/pb-new-setup
at /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/postcss-load-config/src/index.js:91:15
at async Object.transformer [as postcss] (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/transformers/postcss.js:1:889)
at async style (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/autoProcess.js:1:2658)
at async /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26761:32
at async Promise.all (index 0)
at async replace_async (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26716:52)
at async preprocess (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26757:19)
Error: No PostCSS Config found in: /Users/lucian.voju/projects/pbk/pb/pb-new-setup
at /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/postcss-load-config/src/index.js:91:15
at async Object.transformer [as postcss] (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/transformers/postcss.js:1:889)
at async style (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/autoProcess.js:1:2658)
at async /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26761:32
at async Promise.all (index 0)
at async replace_async (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26716:52)
at async preprocess (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26757:19)
Error: No PostCSS Config found in: /Users/lucian.voju/projects/pbk/pb/pb-new-setup
at /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/postcss-load-config/src/index.js:91:15
at async Object.transformer [as postcss] (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/transformers/postcss.js:1:889)
at async style (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/autoProcess.js:1:2658)
at async /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26761:32
at async Promise.all (index 0)
at async replace_async (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26716:52)
at async preprocess (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26757:19)
Error: No PostCSS Config found in: /Users/lucian.voju/projects/pbk/pb/pb-new-setup
at /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/postcss-load-config/src/index.js:91:15
at async Object.transformer [as postcss] (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/transformers/postcss.js:1:889)
at async style (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/autoProcess.js:1:2658)
at async /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26761:32
at async Promise.all (index 0)
at async replace_async (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26716:52)
at async preprocess (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26757:19)
Error: No PostCSS Config found in: /Users/lucian.voju/projects/pbk/pb/pb-new-setup
at /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/postcss-load-config/src/index.js:91:15
at async Object.transformer [as postcss] (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/transformers/postcss.js:1:889)
at async style (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/autoProcess.js:1:2658)
at async /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26761:32
at async Promise.all (index 0)
at async replace_async (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26716:52)
at async preprocess (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26757:19)
Error: No PostCSS Config found in: /Users/lucian.voju/projects/pbk/pb/pb-new-setup
at /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/postcss-load-config/src/index.js:91:15
at async Object.transformer [as postcss] (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/transformers/postcss.js:1:889)
at async style (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/autoProcess.js:1:2658)
at async /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26761:32
at async Promise.all (index 0)
at async replace_async (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26716:52)
at async preprocess (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26757:19)
Error: No PostCSS Config found in: /Users/lucian.voju/projects/pbk/pb/pb-new-setup
at /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/postcss-load-config/src/index.js:91:15
at async Object.transformer [as postcss] (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/transformers/postcss.js:1:889)
at async style (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/autoProcess.js:1:2658)
at async /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26761:32
at async Promise.all (index 0)
at async replace_async (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26716:52)
at async preprocess (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26757:19)
Error: No PostCSS Config found in: /Users/lucian.voju/projects/pbk/pb/pb-new-setup
at /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/postcss-load-config/src/index.js:91:15
at async Object.transformer [as postcss] (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/transformers/postcss.js:1:889)
at async style (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/autoProcess.js:1:2658)
at async /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26761:32
at async Promise.all (index 0)
at async replace_async (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26716:52)
at async preprocess (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26757:19)
Error: No PostCSS Config found in: /Users/lucian.voju/projects/pbk/pb/pb-new-setup
at /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/postcss-load-config/src/index.js:91:15
at async Object.transformer [as postcss] (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/transformers/postcss.js:1:889)
at async style (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/autoProcess.js:1:2658)
at async /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26761:32
at async Promise.all (index 0)
at async replace_async (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26716:52)
at async preprocess (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26757:19)
Error: No PostCSS Config found in: /Users/lucian.voju/projects/pbk/pb/pb-new-setup
at /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/postcss-load-config/src/index.js:91:15
at async Object.transformer [as postcss] (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/transformers/postcss.js:1:889)
at async style (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/autoProcess.js:1:2658)
at async /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26761:32
at async Promise.all (index 0)
at async replace_async (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26716:52)
at async preprocess (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26757:19)
Error: No PostCSS Config found in: /Users/lucian.voju/projects/pbk/pb/pb-new-setup
at /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/postcss-load-config/src/index.js:91:15
at async Object.transformer [as postcss] (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/transformers/postcss.js:1:889)
at async style (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/autoProcess.js:1:2658)
at async /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26761:32
at async Promise.all (index 0)
at async replace_async (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26716:52)
at async preprocess (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26757:19)
Error: No PostCSS Config found in: /Users/lucian.voju/projects/pbk/pb/pb-new-setup
at /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/postcss-load-config/src/index.js:91:15
at async Object.transformer [as postcss] (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/transformers/postcss.js:1:889)
at async style (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte-preprocess/dist/autoProcess.js:1:2658)
at async /Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26761:32
at async Promise.all (index 0)
at async replace_async (/Users/lucian.voju/projects/pbk/pb/pb-new-setup/node_modules/svelte/compiler.js:26716:5