UNPKG

2 kBJavaScriptView Raw
1#!/usr/bin/env node
2'use strict';
3
4var path = require('path');
5var webpack = require('webpack');
6var fs = require('fs');
7
8var VERSION = JSON.parse(fs.readFileSync('./package.json')).version;
9var TYPE = '';
10var SLIM = false;
11var MINIFIED = false;
12var TARGET = '';
13
14var args = process.argv.slice(2);
15while(args.length > 0) {
16 if(args.length === 1) {
17 TARGET = args[0];
18 }
19 else {
20 switch(args[0]) {
21 case '-s':
22 SLIM = true;
23 TYPE = '(slim, only works with precompiled templates)';
24 break;
25 case '-m':
26 MINIFIED = true;
27 break;
28 }
29 }
30 args.shift();
31}
32
33var config = {
34 entry: './index.js',
35 output: {
36 path: path.join(__dirname, '../browser'),
37 filename: TARGET,
38 library: 'nunjucks'
39 },
40 node: {
41 process: 'empty'
42 },
43 plugins: [
44 new webpack.NormalModuleReplacementPlugin(/(path|precompile)$/,
45 'node-libs-browser/mock/empty'),
46 new webpack.BannerPlugin(
47 'Browser bundle of nunjucks ' + VERSION + ' ' + TYPE
48 ),
49 new webpack.DefinePlugin({
50 'process.env': {
51 IS_BROWSER: true
52 }
53 })
54 ]
55};
56
57if(SLIM) {
58 config.plugins.push(
59 new webpack.NormalModuleReplacementPlugin(
60 /(nodes|lexer|parser|transformer|compiler|loaders)$/,
61 'node-libs-browser/mock/empty'
62 )
63 );
64}
65else {
66 config.plugins.push(
67 new webpack.NormalModuleReplacementPlugin(/loaders\.js$/,
68 './web-loaders.js')
69 );
70}
71
72if(MINIFIED) {
73 config.plugins.push(
74 new webpack.optimize.UglifyJsPlugin({ sourceMap: false })
75 );
76}
77
78var outputOptions = {
79 cached: false,
80 cachedAssets: false
81};
82
83webpack(config).run(function (err, stats) {
84 if(err) {
85 throw new Error(err);
86 }
87 console.log(stats.toString(outputOptions));
88});