Skip to content

Instantly share code, notes, and snippets.

@dephiros
Created May 31, 2019 15:44
Show Gist options
  • Save dephiros/4d2519de027b60849f0831ede4633fce to your computer and use it in GitHub Desktop.
Save dephiros/4d2519de027b60849f0831ede4633fce to your computer and use it in GitHub Desktop.
Webpack + Sapper + Tailwind
{
"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"
}
}
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' }),
]),
],
};
const defaultTheme = require('tailwindcss/defaultTheme');
module.exports = {
theme: {
},
variants: {
// Some useful comment
},
plugins: [
// Some useful comment
],
};
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,
},
};
@LucianVoju
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment