UNPKG

3.14 kBJavaScriptView Raw
1var _ = require('lodash');
2var assert = require('assert');
3var async = require('async');
4var fs = require('fs-extra');
5var iconv = require('iconv-lite');
6var path = require('path');
7
8var miaow = require('../index');
9
10var cwdPath = path.resolve(__dirname, './fixtures/dest');
11var outputPath = path.resolve(__dirname, './output');
12var defaultOptions = {
13 cwd: cwdPath,
14 output: outputPath,
15 pack: false,
16 module: {
17 tasks: []
18 }
19};
20
21describe('生成', 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});