1 | var _ = require('lodash');
|
2 | var assert = require('assert');
|
3 | var async = require('async');
|
4 | var fs = require('fs-extra');
|
5 | var iconv = require('iconv-lite');
|
6 | var path = require('path');
|
7 |
|
8 | var miaow = require('../index');
|
9 |
|
10 | var cwdPath = path.resolve(__dirname, './fixtures/dest');
|
11 | var outputPath = path.resolve(__dirname, './output');
|
12 | var defaultOptions = {
|
13 | cwd: cwdPath,
|
14 | output: outputPath,
|
15 | pack: false,
|
16 | module: {
|
17 | tasks: []
|
18 | }
|
19 | };
|
20 |
|
21 | describe('生成', function () {
|
22 | this.timeout(10e3);
|
23 |
|
24 | it('生成文件', function (done) {
|
25 | var pathList = _.map([
|
26 | 'foo.js',
|
27 | 'foo_1ca528407f.js',
|
28 | 'foo.png',
|
29 | 'foo_38a0cf534e.png'
|
30 | ], function (item) {
|
31 | return path.resolve(outputPath, item);
|
32 | });
|
33 |
|
34 | async.series([
|
35 |
|
36 | miaow.compile.bind(miaow, defaultOptions),
|
37 |
|
38 | function (cb) {
|
39 | async.every(pathList, fs.exists, function (result) {
|
40 | assert.equal(result, true);
|
41 | cb(null);
|
42 | });
|
43 | }
|
44 | ], function (err) {
|
45 | done(err);
|
46 | });
|
47 | });
|
48 |
|
49 | it('不添加Hash值', function (done) {
|
50 | var options = _.extend({}, defaultOptions, {
|
51 | hash: 0
|
52 | });
|
53 |
|
54 | var pathList = _.map([
|
55 | 'foo_1ca528407f.js',
|
56 | 'foo_38a0cf534e.png'
|
57 | ], function (item) {
|
58 | return path.resolve(outputPath, item);
|
59 | });
|
60 |
|
61 | async.series([
|
62 |
|
63 | miaow.compile.bind(miaow, options),
|
64 |
|
65 | function (cb) {
|
66 | async.any(pathList, fs.exists, function (result) {
|
67 | assert.equal(result, false);
|
68 | cb(null);
|
69 | });
|
70 | }
|
71 | ], function (err) {
|
72 | done(err);
|
73 | });
|
74 | });
|
75 |
|
76 | it('修改目标路径', function (done) {
|
77 | var options = _.extend({}, defaultOptions, {
|
78 | module: {
|
79 | road: [
|
80 | {
|
81 | test: /(.*\.js)/,
|
82 | release: 'js/$1'
|
83 | },
|
84 | {
|
85 | test: /(.*\.png)/,
|
86 | release: 'png/$1'
|
87 | }
|
88 | ]
|
89 | }
|
90 | });
|
91 | var pathList = _.map([
|
92 | 'js/foo.js',
|
93 | 'js/foo_1ca528407f.js',
|
94 | 'png/foo.png',
|
95 | 'png/foo_38a0cf534e.png'
|
96 | ], function (item) {
|
97 | return path.resolve(outputPath, item);
|
98 | });
|
99 |
|
100 | async.series([
|
101 |
|
102 | miaow.compile.bind(miaow, options),
|
103 |
|
104 | function (cb) {
|
105 | async.every(pathList, fs.exists, function (result) {
|
106 | assert.equal(result, true);
|
107 | cb(null);
|
108 | });
|
109 | }
|
110 | ], function (err) {
|
111 | done(err);
|
112 | });
|
113 | });
|
114 |
|
115 | it('修改目标文件编码', function (done) {
|
116 | var encoding = 'gbk';
|
117 | var options = _.extend({}, defaultOptions, {
|
118 | module: {
|
119 | road: [{
|
120 | test: /.*\.js$/,
|
121 | encoding: encoding
|
122 | }]
|
123 | }
|
124 | });
|
125 |
|
126 | async.waterfall([
|
127 |
|
128 | miaow.compile.bind(miaow, options),
|
129 |
|
130 | fs.readFile.bind(fs, path.join(outputPath, 'foo.js')),
|
131 |
|
132 | function (data, cb) {
|
133 | assert.equal(iconv.decode(data, encoding), 'module.exports = \'你好,世界!\';\n');
|
134 | cb();
|
135 | }
|
136 | ], function (err) {
|
137 | done(err);
|
138 | });
|
139 | });
|
140 |
|
141 | });
|