mirror of
https://github.com/ant-design/ant-design.git
synced 2024-12-23 23:18:36 +08:00
143 lines
4.2 KiB
JavaScript
143 lines
4.2 KiB
JavaScript
var path = require('path');
|
|
var package = require('./package');
|
|
var webpack = require('webpack');
|
|
var ProgressPlugin = require('webpack/lib/ProgressPlugin');
|
|
var inspect = require('util').inspect;
|
|
var Busboy = require('busboy');
|
|
var chalk = require('chalk');
|
|
var webpackMiddleware = require('webpack-dev-middleware');
|
|
var webpackHotMiddleware = require('webpack-hot-middleware');
|
|
var webpackConfig = require('./webpack.config');
|
|
var webpackCompiler = webpack(webpackConfig);
|
|
var handler;
|
|
|
|
webpackCompiler.apply(new ProgressPlugin(function(percentage, msg) {
|
|
var stream = process.stderr;
|
|
if (stream.isTTY && percentage < 0.71) {
|
|
stream.cursorTo(0);
|
|
stream.write('📦 ' + chalk.magenta(msg));
|
|
stream.clearLine(1);
|
|
} else if (percentage === 1) {
|
|
console.log(chalk.green('\nwebpack: bundle build is now finished.'));
|
|
}
|
|
}));
|
|
|
|
// {{ settings for nico
|
|
exports.site = {
|
|
name: package.title,
|
|
description: package.description,
|
|
repo: package.repository.url,
|
|
issues: package.bugs.url
|
|
};
|
|
|
|
// PRODUCTION
|
|
if (process.env.NODE_ENV === 'PRODUCTION') {
|
|
exports.minimized = '.min';
|
|
} else {
|
|
exports.minimized = '';
|
|
}
|
|
|
|
exports.package = package;
|
|
exports.theme = 'site';
|
|
exports.source = process.cwd();
|
|
exports.output = path.join(process.cwd(), '_site');
|
|
exports.permalink = '{{directory}}/{{filename}}';
|
|
exports.antdCssUrl = '../dist/' + package.name + '-' + package.version + exports.minimized + '.css';
|
|
exports.antdJsUrl = '../dist/' + package.name + '-' + package.version + exports.minimized + '.js';
|
|
|
|
exports.ignorefilter = function(filepath, subdir) {
|
|
var extname = path.extname(filepath);
|
|
if (extname === '.tmp' || extname === '.bak') {
|
|
return false;
|
|
}
|
|
if (/\.DS_Store/.test(filepath)) {
|
|
return false;
|
|
}
|
|
if (/^(_site|_theme|node_modules|site|\.idea)/.test(subdir)) {
|
|
return false;
|
|
}
|
|
return true;
|
|
};
|
|
exports.middlewares = [
|
|
{
|
|
name: 'upload',
|
|
filter: /upload\.do?$/,
|
|
handle: function(req, res, next) {
|
|
if (req.method === 'POST') {
|
|
var busboy = new Busboy({headers: req.headers});
|
|
busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
|
|
console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding + ', mimetype: ' + mimetype);
|
|
file.on('data', function(data) {
|
|
console.log('File [' + fieldname + '] got ' + data.length + ' bytes');
|
|
});
|
|
file.on('end', function() {
|
|
console.log('File [' + fieldname + '] Finished');
|
|
});
|
|
});
|
|
busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated) {
|
|
console.log('Field [' + fieldname + ']: value: ' + inspect(val));
|
|
});
|
|
busboy.on('finish', function() {
|
|
console.log('Done parsing form!');
|
|
//res.writeHead(303, { Connection: 'close', Location: '/' });
|
|
res.end(JSON.stringify({
|
|
'status': 'success',
|
|
'url': '/example.file'
|
|
}));
|
|
});
|
|
req.pipe(busboy);
|
|
}
|
|
}
|
|
},
|
|
{
|
|
name: 'webpackDevMiddleware',
|
|
filter: /\.(js|css|json)(\.map)?(\?.*)?$/,
|
|
handle: function(req, res, next) {
|
|
req.path = req.path || req.url;
|
|
handler = handler || webpackMiddleware(webpackCompiler, {
|
|
publicPath: webpackConfig.output.publicPath,
|
|
lazy: false,
|
|
watchOptions: {
|
|
aggregateTimeout: 300,
|
|
poll: false
|
|
},
|
|
noInfo: true
|
|
});
|
|
try {
|
|
return handler(req, res, next);
|
|
} catch(e) {}
|
|
}
|
|
},
|
|
{
|
|
name: 'webpackHotMiddleware',
|
|
filter: /.*/,
|
|
handle: webpackHotMiddleware(webpackCompiler)
|
|
}
|
|
];
|
|
|
|
exports.writers = [
|
|
'nico-jsx.PageWriter',
|
|
'nico-jsx.StaticWriter',
|
|
'nico-jsx.FileWriter'
|
|
];
|
|
|
|
exports.watchFunc = function(e) {
|
|
console.log('reload: ' + e.filepath);
|
|
var post = e.post;
|
|
if (post && post.template === 'code' && post.id) {
|
|
var demoNode = $('#' + post.id);
|
|
if (demoNode[0]) {
|
|
ReactDOM.unmountComponentAtNode(demoNode[0]);
|
|
demoNode.next().remove().insertAfter(demoNode);
|
|
$(post.html).insertAfter(demoNode.next());
|
|
}
|
|
} else if (!(/\.js(x?)$/.test(post.filename))) {
|
|
location.reload();
|
|
}
|
|
};
|
|
// end settings }}
|
|
|
|
process.on('uncaughtException', function(err) {
|
|
console.log(err);
|
|
});
|