Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore - Port to webpack 2
Browse files Browse the repository at this point in the history
bebraw committed Mar 5, 2017
1 parent d266545 commit 3a897e7
Showing 3 changed files with 146 additions and 107 deletions.
91 changes: 45 additions & 46 deletions package.json
Original file line number Diff line number Diff line change
@@ -41,70 +41,69 @@
"sitemap": "cd build && sitemap-static --prefix=https://webpack.js.org/ > sitemap.xml"
},
"devDependencies": {
"alex": "^3.1.0",
"antwar": "0.8.1-alpha.078b5fbf",
"antwar-helpers": "0.8.1-alpha.078b5fbf",
"antwar-interactive": "0.8.1-alpha.078b5fbf",
"antwar-prevnext-plugin": "0.8.1-alpha.078b5fbf",
"async": "^2.1.2",
"autoprefixer": "^6.3.7",
"babel-core": "^6.10.4",
"babel-eslint": "^6.1.2",
"babel-loader": "^6.2.5",
"babel-plugin-transform-object-rest-spread": "^6.16.0",
"babel-preset-env": "^0.0.8",
"babel-preset-react": "^6.11.1",
"alex": "^4.0.1",
"antwar": "0.8.1-alpha.aa5a1a21",
"antwar-helpers": "0.8.1-alpha.aa5a1a21",
"antwar-interactive": "0.8.1-alpha.aa5a1a21",
"antwar-prevnext-plugin": "0.8.1-alpha.aa5a1a21",
"async": "^2.1.5",
"autoprefixer": "^6.7.6",
"babel-core": "^6.23.1",
"babel-eslint": "^7.1.1",
"babel-loader": "^6.3.2",
"babel-plugin-transform-object-rest-spread": "^6.23.0",
"babel-preset-env": "^1.2.0",
"babel-preset-react": "^6.23.0",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.25.0",
"css-loader": "^0.26.2",
"duplexer": "^0.1.1",
"eslint": "3.6.0",
"eslint-loader": "^1.5.0",
"eslint-plugin-markdown": "^1.0.0-beta.2",
"extract-text-webpack-plugin": "^1.0.1",
"file-loader": "^0.9.0",
"eslint": "3.17.0",
"eslint-loader": "^1.6.3",
"eslint-plugin-markdown": "^1.0.0-beta.4",
"extract-text-webpack-plugin": "^2.1.0",
"file-loader": "^0.10.1",
"fontgen-loader": "^0.2.1",
"gh-pages": "^0.12.0",
"github": "^5.2.3",
"html-webpack-plugin": "^2.22.0",
"html-webpack-plugin": "^2.28.0",
"http-server": "^0.9.0",
"hyperlink": "^2.7.0",
"json-loader": "^0.5.4",
"lodash": "^4.16.1",
"markdown-loader": "^0.1.7",
"markdownlint": "^0.2.0",
"lodash": "^4.17.4",
"markdown-loader": "^2.0.0",
"markdownlint": "^0.4.0",
"markdownlint-cli": "^0.2.0",
"marked": "^0.3.6",
"mkdirp": "^0.5.1",
"modularscale-sass": "^2.1.1",
"moment": "^2.15.1",
"moment": "^2.17.1",
"ncp": "^2.0.0",
"node-sass": "^3.9.3",
"npm-run-all": "^3.1.0",
"postcss-loader": "^0.13.0",
"prism-languages": "^0.3.1",
"prismjs": "^1.5.1",
"node-sass": "^4.5.0",
"npm-run-all": "^4.0.2",
"postcss-loader": "^1.3.3",
"prism-languages": "^0.3.3",
"prismjs": "^1.6.0",
"raw-loader": "^0.5.1",
"request": "^2.75.0",
"sass-loader": "^4.0.2",
"sitemap-static": "^0.3.1",
"style-loader": "^0.13.1",
"tap-min": "^1.1.0",
"request": "^2.80.0",
"sass-loader": "^6.0.2",
"sitemap-static": "^0.4.0",
"style-loader": "^0.13.2",
"tap-min": "^1.2.1",
"tap-parser": "^5.3.3",
"through2": "^2.0.3",
"url-loader": "^0.5.7",
"webpack": "^1.13.2",
"webpack-dev-server": "^1.16.1",
"webpack-merge": "^0.14.1",
"url-loader": "^0.5.8",
"webpack": "^2.2.1",
"webpack-dev-server": "^2.4.1",
"webpack-merge": "^3.0.0",
"yaml-frontmatter-loader": "0.0.3"
},
"dependencies": {
"d3": "^4.2.7",
"filesize": "^3.3.0",
"preact": "^6.2.1",
"preact-compat": "3.11.0",
"react": "^15.3.2",
"react-dom": "^15.3.2",
"d3": "^4.7.1",
"filesize": "^3.5.5",
"preact": "^7.2.0",
"preact-compat": "3.13.1",
"react": "^15.4.2",
"react-dom": "^15.4.2",
"react-router": "^2.8.1",
"whatwg-fetch": "^2.0.1"
"whatwg-fetch": "^2.0.3"
}
}
8 changes: 4 additions & 4 deletions template.ejs
Original file line number Diff line number Diff line change
@@ -2,24 +2,24 @@
<html>
<head>
<meta charset="UTF-8">
<title><%= webpackConfig.template.title %></title>
<title><%= htmlWebpackPlugin.options.context.title %></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#2B3A42">
<link rel="shortcut icon" href="/assets/favicon.ico">

<link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:400,600|Source+Sans+Pro:200,400,400i,500" rel="stylesheet">

<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
<% for (var file in webpackConfig.template.cssFiles) { %>
<link href="<%= webpackConfig.template.cssFiles[file] %>" rel="stylesheet">
<% for (var file of htmlWebpackPlugin.options.context.cssFiles) { %>
<link href="<%= file %>" rel="stylesheet">
<% } %>

<script src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
</head>
<body>
<%- webpackConfig.html %>

<% for (var script of webpackConfig.template.jsFiles) { %>
<% for (var script of htmlWebpackPlugin.options.context.jsFiles) { %>
<script src="<%= script %>"></script>
<% } %>

154 changes: 97 additions & 57 deletions webpack.config.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
var path = require('path');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var CopyWebpackPlugin = require('copy-webpack-plugin');
var Autoprefixer = require('autoprefixer');
var autoprefixer = require('autoprefixer');
var merge = require('webpack-merge');
var webpack = require('webpack');

@@ -13,66 +13,54 @@ var stylePaths = [

const commonConfig = {
resolve: {
extensions: ['', '.js', '.jsx', '.scss']
extensions: ['.js', '.jsx', '.scss']
},
module: {
loaders: [
rules: [
{
test: /\.jsx?$/,
loaders: ['babel-loader', 'eslint-loader'],
test: /\.(js|jsx)$/,
use: 'babel-loader',
include: [
path.join(__dirname, 'components')
]
},
{
test: /\.woff2?$/,
loaders: ['url-loader?prefix=font/&limit=10000&mimetype=application/font-woff']
use: {
loader: 'file-loader',
options: {
prefix: 'font/'
}
}
},
{
test: /\.jpg$/,
loaders: ['file-loader']
},
{
test: /\.png$/,
loaders: ['file-loader']
},
{
test: /\.svg$/,
loaders: ['file-loader']
test: /\.(jpg|png|svg)$/,
use: 'file-loader'
},
{
test: /\.html$/,
loaders: ['raw-loader']
},
{
test: /\.json$/,
loaders: ['json-loader']
use: 'raw-loader'
}
]
},
eslint: {
fix: true,
configFile: require.resolve('./.eslintrc')
},
postcss: function() {
return [ Autoprefixer ];
},
sassLoader: {
includePaths: [ path.join('./styles/partials') ]
},
plugins: [
new CopyWebpackPlugin([{
from: './assets',
to: './assets'
}])
}]),
new webpack.LoaderOptionsPlugin({
eslint: {
configFile: require.resolve('./.eslintrc')
}
})
]
};

const interactiveConfig = {
resolve: {
alias: {
react: 'preact-compat',
'react-dom': 'preact-compat'
react: 'preact-compat/dist/preact-compat.min.js',
'react-dom': 'preact-compat/dist/preact-compat.min.js'
}
},
plugins: [
@@ -86,60 +74,112 @@ const interactiveConfig = {

const developmentConfig = {
module: {
loaders: [
rules: [
{
test: /\.(js|jsx)$/,
use: 'eslint-loader',
include: [
path.join(__dirname, 'components')
]
},
{
test: /\.font.js$/,
loaders: ['style-loader', 'css-loader', 'fontgen-loader']
use: ['style-loader', 'css-loader', 'fontgen-loader']
},
{
test: /\.css$/,
loaders: ['style-loader', 'css-loader'],
use: ['style-loader', 'css-loader'],
include: stylePaths
},
{
test: /\.scss$/,
loaders: ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader'],
use: [
'style-loader',
'css-loader',
postcssLoader(),
sassLoader()
],
include: stylePaths
}
]
}
};

const buildConfig = {
plugins: [
new ExtractTextPlugin('[chunkhash].css', {
allChunks: true
})
],
module: {
loaders: [
rules: [
{
test: /\.(js|jsx)$/,
use: 'eslint-loader',
include: [
path.join(__dirname, 'components')
]
},
{
test: /\.font.js$/,
loader: ExtractTextPlugin.extract(
'style-loader',
'css-loader!fontgen-loader?embed'
)
loader: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [
'css-loader',
{
loader: 'fontgen-loader',
options: {
embed: true
}
}
]
})
},
{
test: /\.css$/,
loader: ExtractTextPlugin.extract(
'style-loader',
'css-loader'
),
loader: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader'
}),
include: stylePaths
},
{
test: /\.scss$/,
loader: ExtractTextPlugin.extract(
'style-loader',
'css-loader!postcss-loader!sass-loader'
),
loader: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [
'css-loader',
postcssLoader(),
sassLoader()
]
}),
include: stylePaths
}
]
}
},
plugins: [
new ExtractTextPlugin({
filename: '[chunkhash].css',
allChunks: true
})
]
};

function postcssLoader() {
return {
loader: 'postcss-loader',
options: {
plugins: () => ([
require('autoprefixer'),
]),
}
};
}

function sassLoader() {
return {
loader: 'sass-loader',
options: {
includePaths: [ path.join('./styles/partials') ]
}
};
}

module.exports = function(env) {
switch(env) {
case 'start':

0 comments on commit 3a897e7

Please sign in to comment.