1 | var path = require('path');
|
2 |
|
3 | var paths = require('../config/paths');
|
4 | var names = require('../config/names');
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 | function configProcess(config, mode) {
|
32 |
|
33 | var context = (config && config.context) || paths.context;
|
34 | var input = config && config.input;
|
35 | var output = Object.assign({}, paths.output, config && config.output);
|
36 | var server;
|
37 | if (config && config.server === false) {
|
38 | server = false;
|
39 | } else {
|
40 | server = Object.assign({}, paths.server, config && config.server);
|
41 | }
|
42 | var defaultFilenames = names[process.env.NODE_ENV];
|
43 | var filenames = Object.assign({}, defaultFilenames, config && config.filenames);
|
44 | var chunks = config.chunks;
|
45 |
|
46 | if (!Array.isArray(input)) {
|
47 | input = [Object.assign({}, paths.input, input)];
|
48 | } else {
|
49 | input = input.map(function (item) {
|
50 | return Object.assign({}, paths.input, item);
|
51 | });
|
52 | }
|
53 |
|
54 | var realServer = '';
|
55 | if (server) {
|
56 | realServer = (server.protocol ? (server.protocol + '://') : '//')
|
57 | + server.host
|
58 | + (server.port ? (':' + server.port) : '');
|
59 | }
|
60 |
|
61 | if (chunks === undefined || typeof chunks === 'string') {
|
62 | chunks = [{
|
63 | name: chunks || 'dev',
|
64 | dependencies: Object.keys(require(path.resolve(context, 'package.json')).dependencies),
|
65 | }];
|
66 | } else if (chunks === false || !Array.isArray(chunks)) {
|
67 | chunks = [];
|
68 | }
|
69 | return Object.assign({}, config, {
|
70 | context: context,
|
71 | input: input.map(function (i) {
|
72 | return {
|
73 | name: i.name,
|
74 | src: path.resolve(context, i.src),
|
75 | script: path.resolve(context, i.script),
|
76 | html: path.resolve(context, i.html),
|
77 | };
|
78 | }),
|
79 | output: {
|
80 | dll: path.resolve(context, output.dll),
|
81 | build: path.resolve(context, output.build),
|
82 | public: output.public,
|
83 | publicUrl: realServer + '/',
|
84 | publicPath: realServer + output.public,
|
85 | },
|
86 | server: server,
|
87 | filenames: Object.keys(filenames).reduce(function (names, key) {
|
88 | names[key] = filenames[key].replace('[default]', defaultFilenames[key]);
|
89 | return names;
|
90 | }, {}),
|
91 | chunks,
|
92 | options: config.options,
|
93 | });
|
94 | }
|
95 |
|
96 | module.exports = configProcess;
|