1 | #!/usr/bin/env node
|
2 | 'use strict';
|
3 |
|
4 | var path = require('path');
|
5 | var webpack = require('webpack');
|
6 | var fs = require('fs');
|
7 |
|
8 | var VERSION = JSON.parse(fs.readFileSync('./package.json')).version;
|
9 | var TYPE = '';
|
10 | var SLIM = false;
|
11 | var MINIFIED = false;
|
12 | var TARGET = '';
|
13 |
|
14 | var args = process.argv.slice(2);
|
15 | while(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 |
|
33 | var 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 |
|
57 | if(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 | }
|
65 | else {
|
66 | config.plugins.push(
|
67 | new webpack.NormalModuleReplacementPlugin(/loaders\.js$/,
|
68 | './web-loaders.js')
|
69 | );
|
70 | }
|
71 |
|
72 | if(MINIFIED) {
|
73 | config.plugins.push(
|
74 | new webpack.optimize.UglifyJsPlugin({ sourceMap: false })
|
75 | );
|
76 | }
|
77 |
|
78 | var outputOptions = {
|
79 | cached: false,
|
80 | cachedAssets: false
|
81 | };
|
82 |
|
83 | webpack(config).run(function (err, stats) {
|
84 | if(err) {
|
85 | throw new Error(err);
|
86 | }
|
87 | console.log(stats.toString(outputOptions));
|
88 | });
|