@ithaka/bonsai
Version:
ITHAKA core styling
104 lines (98 loc) • 3.31 kB
JavaScript
;
let path = require("path"),
ExtractTextPlugin = require("extract-text-webpack-plugin"),
StyleLintPlugin = require("stylelint-webpack-plugin"),
WebpackShellPlugin = require("webpack-shell-plugin");
const extractSass = new ExtractTextPlugin("[name]");
const lintSass = new StyleLintPlugin({
syntax: "scss",
configFile: ".stylelintrc"
});
module.exports = {
entry: {
// For Bonsai compilation
"dist/js/bonsai.bundle.js": "./js/index.js",
"dist/css/bonsai.css": "./scss/global.scss",
// For Style Guide Production/Test builds
"documentation/assets/css/documentation.css": "./scss/documentation.scss",
"documentation/assets/js/bonsai.bundle.js": "./js/index.js",
"documentation/assets/js/colors.bundle.js": "./documentation/colors.js",
// For local development build
"styleguide/assets/css/documentation.css": "./scss/documentation.scss",
"styleguide/assets/js/bonsai.bundle.js": "./js/index.js",
"styleguide/assets/js/colors.bundle.js": "./documentation/colors.js",
},
devtool: process.env.NODE_ENV === "production" ? "#hidden-source-map" : "#inline-source-map",
module: {
rules: [
{
test: /\.html$/,
use: "raw-loader"
},
{
test: /\.md$/,
use: "raw-loader"
},
{
test: /\.modernizrrc(\.json)?$/,
use: [ "modernizr-loader", "json-loader"]
},
{
test: /\.s?css$/,
use: extractSass.extract({
use: [{
loader: "css-loader",
options: {
sourceMap: true
}
}, {
loader: "sass-loader",
options: {
includePaths: [
"scss",
"node_modules/"
],
sourceMap: true,
outputStyle: "expanded"
}
}],
fallback: "style-loader"
})
},
{
test: /\.js$/,
exclude: /node_modules(?!\/foundation-sites)/,
loader: "babel-loader",
options: {
presets: ["env"]
}
},
{
test: /\.js$/,
exclude: /node_modules/,
loader: "eslint-loader"
},
{
test: /\.(eot|woff|woff2|ttf|svg|png|jpe?g|gif)(\?\S*)?$/,
loader: "url-loader?limit=100000&name=./dist/fonts/[hash].[ext]"
}
]
},
resolve: {
alias: {
modernizr$: path.resolve(__dirname, ".modernizrrc"),
'handlebars': 'handlebars/dist/handlebars.js'
}
},
externals: {
jquery: "jQuery"
},
output: {
filename: "[name]"
},
plugins: [
extractSass,
lintSass,
new WebpackShellPlugin({onBuildExit:["node generate-docs.js"]})
]
};