Skip to content

Commit 446bdbb

Browse files
committed
fix: devtool and sourceMap, dev: eval
1 parent 34a5b4a commit 446bdbb

7 files changed

Lines changed: 145 additions & 141 deletions

File tree

lib/core/config.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -411,17 +411,17 @@ class Config {
411411
// devtool 只在 dev 模式开启,build 模式需要 通过 easy build 显示制定 --devtool
412412
setDevTool(devtool, force) {
413413
// cli mode force devtool, not use default config
414-
const cliDevtool = this.config.cliDevtool;
414+
const cli = this.config.cli || {};
415415
/* istanbul ignore next */
416-
if (this.utils.isString(cliDevtool)) {
417-
this.webpackConfig.devtool = cliDevtool;
418-
} else if (cliDevtool === true) {
416+
if (this.utils.isString(cli.devtool)) {
417+
this.webpackConfig.devtool = cli.devtool;
418+
} else if (cli.devtool === true) {
419419
this.webpackConfig.devtool = 'source-map';
420-
} else if (devtool) { /* istanbul ignore next */
421-
if (this.dev) {
420+
} else if (this.dev) { /* istanbul ignore next */
421+
if (devtool) {
422422
this.webpackConfig.devtool = devtool;
423423
} else {
424-
this.webpackConfig.devtool = false;
424+
this.webpackConfig.devtool = 'eval';
425425
}
426426
} else {
427427
this.webpackConfig.devtool = false;

lib/target/base.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ class WebpackBaseBuilder extends Config {
99
constructor(config = {}) {
1010
super(config);
1111
this.setStyleLoader(STYLE_LOADER);
12+
this.setDevTool(config.devtool);
1213
}
1314

1415
getDLLChunk() {

lib/target/client.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ class WebpackClientBuilder extends WebpackBaseBuilder {
77
constructor(config) {
88
super(config);
99
this.type = WebpackClientBuilder.TYPE;
10-
this.setDevTool(config.devtool);
1110
this.setPack(config.packs);
1211
this.setTarget(WebpackClientBuilder.TARGET);
1312
// this.setCommonsChunkLib();
@@ -21,7 +20,7 @@ class WebpackClientBuilder extends WebpackBaseBuilder {
2120
prepareLoaderOption(loaders, loaderOptions) {
2221
super.prepareLoaderOption(loaders, loaderOptions);
2322
// 自动设置sourceMap
24-
const options = this.config.devtool ? { sourceMap: true } : {};
23+
const options = this.webpackConfig.devtool ? { sourceMap: true } : {};
2524
const cssLoaderOptions = this.getCssLoaderOptions();
2625
Object.keys(loaders).forEach(name => {
2726
const itemLoader = loaders[name];

lib/target/dll.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ class WebpackDllBuilder extends WebpackBaseBuilder {
88
this.setTarget(WebpackDllBuilder.TARGET);
99
this.mergeConfig(dll);
1010
this.setBuildPath(this.utils.getDllCompileFileDir(this.env), true);
11-
this.setDevTool(config.devtool);
1211
this.setLibrary('[name]');
1312
this.setStartCreateQueue(this.setBabelENV);
1413
this.setCreateQueue(this.createDllPlugin);

test/client.test.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -354,8 +354,13 @@ describe('client.test.js', () => {
354354
const webpackConfig = builder.create();
355355
expect(webpackConfig.devtool).to.equal('source-map');
356356
});
357+
it('should test eval devtool test', () => {
358+
const builder = createBuilder({ env: 'test', devtool: 'eval'});
359+
const webpackConfig = builder.create();
360+
expect(webpackConfig.devtool).to.be.false;
361+
});
357362
it('should prod devtool test', () => {
358-
const builder = createBuilder({ env: 'prod', cliDevtool: 'source-map'});
363+
const builder = createBuilder({ env: 'prod', cli: { devtool: 'source-map' }});
359364
const webpackConfig = builder.create();
360365
expect(webpackConfig.devtool).to.equal('source-map');
361366
});
@@ -365,17 +370,17 @@ describe('client.test.js', () => {
365370
expect(webpackConfig.devtool).to.equal('eval');
366371
});
367372
it('should prod eval devtool test', () => {
368-
const builder = createBuilder({ env: 'prod', cliDevtool: 'eval'});
373+
const builder = createBuilder({ env: 'prod', cli: { devtool: 'eval' }});
369374
const webpackConfig = builder.create();
370375
expect(webpackConfig.devtool).to.equal('eval');
371376
});
372377
it('should dev cli eval devtool test', () => {
373-
const builder = createBuilder({ env: 'prod', devtool: 'eval', cliDevtool: true});
378+
const builder = createBuilder({ env: 'prod', devtool: 'eval', cli: { devtool: true }});
374379
const webpackConfig = builder.create();
375380
expect(webpackConfig.devtool).to.equal('source-map');
376381
});
377382
it('should prod cli eval devtool test', () => {
378-
const builder = createBuilder({ env: 'prod', devtool: 'eval', cliDevtool: true });
383+
const builder = createBuilder({ env: 'prod', devtool: 'eval', cli: { devtool: true } });
379384
const webpackConfig = builder.create();
380385
expect(webpackConfig.devtool).to.equal('source-map');
381386
});

test/loader.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,13 +284,13 @@ describe('loader.test.js', () => {
284284

285285
describe('#webpack feature loader test', () => {
286286
it('should postcss-loader default config', () => {
287-
const builder = createBuilder();
287+
const builder = createBuilder({ env: 'dev' });
288288
const webpackConfig = builder.create();
289289
const cssLoader = helper.getLoaderByName('css', webpackConfig.module.rules);
290290
const postcssLoader = cssLoader.use.find(loader => {
291291
return loader.loader === 'postcss-loader';
292292
});
293-
expect(postcssLoader.options.sourceMap).to.be.undefined;
293+
expect(postcssLoader.options.sourceMap).to.be.true;
294294
});
295295

296296
it('should postcss-loader devtool config', () => {

test/typescript.test.js

Lines changed: 125 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -25,138 +25,138 @@ describe('typescript.test.js', () => {
2525
expect(webpackConfig.resolve.extensions).to.include.members(['.ts']);
2626
});
2727

28-
// it('should webpack typescript babel test', () => {
29-
// const builder = helper.createClientBuilder({ framework: 'react', loaders: { typescript: true }});
30-
// const webpackConfig = builder.create();
31-
// const loaders = helper.getLoaderByName('ts', webpackConfig.module.rules);
32-
// expect(webpackConfig.resolve.extensions).to.include.members(['.ts']);
33-
// expect(loaders.use.length).to.equal(4);
34-
// expect(loaders.use[0].loader).to.equal('babel-loader');
35-
// });
28+
it('should webpack typescript babel test', () => {
29+
const builder = helper.createClientBuilder({ framework: 'react', loaders: { typescript: true }});
30+
const webpackConfig = builder.create();
31+
const loaders = helper.getLoaderByName('ts', webpackConfig.module.rules);
32+
expect(webpackConfig.resolve.extensions).to.include.members(['.ts']);
33+
expect(loaders.use.length).to.equal(4);
34+
expect(loaders.use[0].loader).to.equal('babel-loader');
35+
});
3636

37-
// it('should default typescript enable test', () => {
38-
// const builder = helper.createBuilder();
39-
// const webpackConfig = builder.create();
40-
// const tsLoader = helper.getLoaderByName('ts', webpackConfig.module.rules);
41-
// const tslint = helper.getLoaderByName('tslint', webpackConfig.module.rules);
42-
// expect(tsLoader).to.be.undefined;
43-
// expect(tslint).to.be.undefined;
44-
// });
37+
it('should default typescript enable test', () => {
38+
const builder = helper.createBuilder();
39+
const webpackConfig = builder.create();
40+
const tsLoader = helper.getLoaderByName('ts', webpackConfig.module.rules);
41+
const tslint = helper.getLoaderByName('tslint', webpackConfig.module.rules);
42+
expect(tsLoader).to.be.undefined;
43+
expect(tslint).to.be.undefined;
44+
});
4545

46-
// it('should typescript cache enable test', () => {
47-
// const builder = helper.createBuilder({
48-
// loaders:{
49-
// eslint: true,
50-
// tslint: true,
51-
// typescript: true
52-
// },
53-
// compile:{
54-
// thread: false
55-
// }
56-
// });
57-
// const webpackConfig = builder.create();
58-
// const tsLoader = helper.getLoaderByName('ts', webpackConfig.module.rules);
59-
// const eslint = helper.getLoaderByName('eslint', webpackConfig.module.rules);
60-
// const tslint = helper.getLoaderByName('tslint', webpackConfig.module.rules);
61-
// expect(tsLoader.use[0].loader).to.equal('cache-loader');
62-
// expect(tsLoader.use[1].loader).to.equal('ts-loader');
63-
// expect(eslint.use[0].loader).to.equal('eslint-loader');
64-
// expect(tslint.use[0].loader).to.equal('tslint-loader');
65-
// expect(webpackConfig.resolve.extensions).to.include.members(['.ts', '.js']);
66-
// });
46+
it('should typescript cache enable test', () => {
47+
const builder = helper.createBuilder({
48+
loaders:{
49+
eslint: true,
50+
tslint: true,
51+
typescript: true
52+
},
53+
compile:{
54+
thread: false
55+
}
56+
});
57+
const webpackConfig = builder.create();
58+
const tsLoader = helper.getLoaderByName('ts', webpackConfig.module.rules);
59+
const eslint = helper.getLoaderByName('eslint', webpackConfig.module.rules);
60+
const tslint = helper.getLoaderByName('tslint', webpackConfig.module.rules);
61+
expect(tsLoader.use[0].loader).to.equal('cache-loader');
62+
expect(tsLoader.use[1].loader).to.equal('ts-loader');
63+
expect(eslint.use[0].loader).to.equal('eslint-loader');
64+
expect(tslint.use[0].loader).to.equal('tslint-loader');
65+
expect(webpackConfig.resolve.extensions).to.include.members(['.ts', '.js']);
66+
});
6767

68-
// it('should typescript cache and thread enable test', () => {
69-
// const builder = helper.createBuilder({
70-
// loaders:{
71-
// eslint: true,
72-
// tslint: true,
73-
// typescript: true
74-
// }
75-
// });
76-
// const webpackConfig = builder.create();
77-
// const tsLoader = helper.getLoaderByName('ts', webpackConfig.module.rules);
78-
// const eslint = helper.getLoaderByName('eslint', webpackConfig.module.rules);
79-
// const tslint = helper.getLoaderByName('tslint', webpackConfig.module.rules);
80-
// expect(tsLoader.use[0].loader).to.equal('cache-loader');
81-
// expect(tsLoader.use[1].loader).to.equal('thread-loader');
82-
// expect(tsLoader.use[2].loader).to.equal('ts-loader');
83-
// expect(eslint.use[0].loader).to.equal('eslint-loader');
84-
// expect(tslint.use[0].loader).to.equal('tslint-loader');
85-
// expect(webpackConfig.resolve.extensions).to.include.members(['.ts', '.js']);
86-
// });
68+
it('should typescript cache and thread enable test', () => {
69+
const builder = helper.createBuilder({
70+
loaders:{
71+
eslint: true,
72+
tslint: true,
73+
typescript: true
74+
}
75+
});
76+
const webpackConfig = builder.create();
77+
const tsLoader = helper.getLoaderByName('ts', webpackConfig.module.rules);
78+
const eslint = helper.getLoaderByName('eslint', webpackConfig.module.rules);
79+
const tslint = helper.getLoaderByName('tslint', webpackConfig.module.rules);
80+
expect(tsLoader.use[0].loader).to.equal('cache-loader');
81+
expect(tsLoader.use[1].loader).to.equal('thread-loader');
82+
expect(tsLoader.use[2].loader).to.equal('ts-loader');
83+
expect(eslint.use[0].loader).to.equal('eslint-loader');
84+
expect(tslint.use[0].loader).to.equal('tslint-loader');
85+
expect(webpackConfig.resolve.extensions).to.include.members(['.ts', '.js']);
86+
});
8787

88-
// it('should typescript cache config test', () => {
89-
// const configFile = path.resolve(__dirname, './app/web/tsconfig.json');
90-
// const builder = helper.createBuilder({
91-
// loaders:{
92-
// typescript: {
93-
// options:{
94-
// configFile,
95-
// }
96-
// }
97-
// },
98-
// compile:{
99-
// thread: false
100-
// }
101-
// });
102-
// const webpackConfig = builder.create();
103-
// const tsLoader = helper.getLoaderByName('ts', webpackConfig.module.rules);
104-
// const eslint = helper.getLoaderByName('eslint', webpackConfig.module.rules);
105-
// const tslint = helper.getLoaderByName('tslint', webpackConfig.module.rules);
106-
// expect(eslint).to.be.undefined;
107-
// expect(tslint).to.be.undefined;
108-
// expect(tsLoader.use[0].loader).to.equal('cache-loader');
109-
// expect(tsLoader.use[1].loader).to.equal('ts-loader');
110-
// expect(tsLoader.use[1].options.configFile).to.equal(configFile);
111-
// });
88+
it('should typescript cache config test', () => {
89+
const configFile = path.resolve(__dirname, './app/web/tsconfig.json');
90+
const builder = helper.createBuilder({
91+
loaders:{
92+
typescript: {
93+
options:{
94+
configFile,
95+
}
96+
}
97+
},
98+
compile:{
99+
thread: false
100+
}
101+
});
102+
const webpackConfig = builder.create();
103+
const tsLoader = helper.getLoaderByName('ts', webpackConfig.module.rules);
104+
const eslint = helper.getLoaderByName('eslint', webpackConfig.module.rules);
105+
const tslint = helper.getLoaderByName('tslint', webpackConfig.module.rules);
106+
expect(eslint).to.be.undefined;
107+
expect(tslint).to.be.undefined;
108+
expect(tsLoader.use[0].loader).to.equal('cache-loader');
109+
expect(tsLoader.use[1].loader).to.equal('ts-loader');
110+
expect(tsLoader.use[1].options.configFile).to.equal(configFile);
111+
});
112112

113-
// it('should typescript cache config test', () => {
114-
// const configFile = path.resolve(__dirname, './app/web/tsconfig.json');
115-
// const builder = helper.createBuilder({
116-
// loaders:{
117-
// typescript: {
118-
// options:{
119-
// configFile,
120-
// }
121-
// }
122-
// },
123-
// compile:{
124-
// thread: false
125-
// }
126-
// });
127-
// const webpackConfig = builder.create();
128-
// const tsLoader = helper.getLoaderByName('ts', webpackConfig.module.rules);
129-
// const eslint = helper.getLoaderByName('eslint', webpackConfig.module.rules);
130-
// const tslint = helper.getLoaderByName('tslint', webpackConfig.module.rules);
131-
// expect(eslint).to.be.undefined;
132-
// expect(tslint).to.be.undefined;
133-
// expect(tsLoader.use[0].loader).to.equal('cache-loader');
134-
// expect(tsLoader.use[1].loader).to.equal('ts-loader');
135-
// expect(tsLoader.use[1].options.configFile).to.equal(configFile);
136-
// });
113+
it('should typescript cache config test', () => {
114+
const configFile = path.resolve(__dirname, './app/web/tsconfig.json');
115+
const builder = helper.createBuilder({
116+
loaders:{
117+
typescript: {
118+
options:{
119+
configFile,
120+
}
121+
}
122+
},
123+
compile:{
124+
thread: false
125+
}
126+
});
127+
const webpackConfig = builder.create();
128+
const tsLoader = helper.getLoaderByName('ts', webpackConfig.module.rules);
129+
const eslint = helper.getLoaderByName('eslint', webpackConfig.module.rules);
130+
const tslint = helper.getLoaderByName('tslint', webpackConfig.module.rules);
131+
expect(eslint).to.be.undefined;
132+
expect(tslint).to.be.undefined;
133+
expect(tsLoader.use[0].loader).to.equal('cache-loader');
134+
expect(tsLoader.use[1].loader).to.equal('ts-loader');
135+
expect(tsLoader.use[1].options.configFile).to.equal(configFile);
136+
});
137137

138-
// it('should tslint enable test', () => {
139-
// const builder = helper.createBuilder({
140-
// loaders:{
141-
// tslint: true
142-
// }
143-
// });
144-
// const webpackConfig = builder.create();
145-
// const tsLoader = helper.getLoaderByName('tslint', webpackConfig.module.rules);
146-
// expect(tsLoader.use[0].loader).to.equal('tslint-loader');
147-
// });
138+
it('should tslint enable test', () => {
139+
const builder = helper.createBuilder({
140+
loaders:{
141+
tslint: true
142+
}
143+
});
144+
const webpackConfig = builder.create();
145+
const tsLoader = helper.getLoaderByName('tslint', webpackConfig.module.rules);
146+
expect(tsLoader.use[0].loader).to.equal('tslint-loader');
147+
});
148148

149-
// it('should typescript egg configFile auto set test', () => {
150-
// const builder = helper.createBuilder({
151-
// egg: true,
152-
// loaders:{
153-
// typescript: true
154-
// }
155-
// });
156-
// const webpackConfig = builder.create();
157-
// const tsLoader = helper.getLoaderByName('ts', webpackConfig.module.rules);
158-
// expect(tsLoader.use[2].loader).to.equal('ts-loader');
159-
// });
149+
it('should typescript egg configFile auto set test', () => {
150+
const builder = helper.createBuilder({
151+
egg: true,
152+
loaders:{
153+
typescript: true
154+
}
155+
});
156+
const webpackConfig = builder.create();
157+
const tsLoader = helper.getLoaderByName('ts', webpackConfig.module.rules);
158+
expect(tsLoader.use[2].loader).to.equal('ts-loader');
159+
});
160160

161161
});
162162
});

0 commit comments

Comments
 (0)