Skip to content

Commit 1e4fa56

Browse files
committed
feat: dev mode node.console: true
1 parent 3bf43ec commit 1e4fa56

10 files changed

Lines changed: 72 additions & 21 deletions

File tree

config/.babelrc

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"presets": [["env", {
3+
"modules": false,
4+
"targets": {
5+
"browsers": ["last 2 versions", "safari >= 7"]
6+
}
7+
}]],
8+
"plugins": [
9+
"transform-object-rest-spread",
10+
"syntax-dynamic-import",
11+
"transform-object-assign",
12+
"transform-runtime"
13+
],
14+
"comments": false
15+
}

config/config.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ exports.devConfig = {
3030
cssExtract: false,
3131
plugins:{
3232
hot: true,
33+
},
34+
node: {
35+
console: true
3336
}
3437
};
3538

config/loader.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,9 @@ exports.babel = {
88
const loaders = [];
99
const compile = this.config.compile;
1010
if (compile.thread) {
11-
loaders.unshift(this.createThreadLoader(this.config.thread));
12-
}
13-
if (compile.cache) {
14-
loaders.push(this.createCacheLoader(this.config.cache, 'babel-loader'));
15-
} else {
16-
loaders.push({ loader: 'babel-loader', options: {} });
11+
loaders.unshift(this.createThreadLoader(compile.thread));
1712
}
13+
loaders.push(this.createBabelLoader());
1814
return loaders;
1915
}
2016
};

lib/base.js

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,18 @@ class WebpackBaseBuilder extends Config {
579579
return { loader, options };
580580
}
581581

582+
createBabelLoader() {
583+
const loaderName = 'babel-loader';
584+
const config = this.config.compile.cache ? this.createCacheLoader(this.config.compile.cache, loaderName) : { loader: loaderName, options: {} };
585+
// use project .babelrc
586+
if (fs.existsSync(this.projectBabelrc)) {
587+
return config;
588+
}
589+
// use default .babelrc
590+
const options = this.utils.readFile(this.babelrc);
591+
return this.merge(config, { options });
592+
}
593+
582594
createCacheLoader(loaderOptions, name) {
583595
const loader = name || 'cache-loader';
584596
const cacheDirectory = this.utils.getCacheLoaderInfoPath(loader, this.env, this.type);
@@ -588,7 +600,7 @@ class WebpackBaseBuilder extends Config {
588600

589601
createThreadLoader(loaderOptions) {
590602
const loader = 'thread-loader';
591-
const options = this.utils.isObject(loaderOptions) ? this.merge({ workers: 2 }, loaderOptions): {};
603+
const options = this.utils.isObject(loaderOptions) ? this.merge({ workers: 2 }, loaderOptions) : {};
592604
return { loader, options };
593605
}
594606

@@ -639,17 +651,14 @@ class WebpackBaseBuilder extends Config {
639651

640652
// 根据 BABEL_ENV 动态获取 BABEL 配置, 支持 node 和 web 配置
641653
setBabelENV(value) {
642-
const babelrc = path.join(this.baseDir, '.babelrc');
643-
if (fs.existsSync(babelrc)) {
644-
const jsonStr = fs.readFileSync(babelrc);
645-
try {
646-
const json = JSON.parse(jsonStr);
647-
if (json && json.env && json.env[value]) {
648-
process.env.BABEL_ENV = value;
649-
}
650-
} catch (e) {
651-
/* istanbul ignore next */
654+
const key = value || this.webpackConfig.target;
655+
try {
656+
const json = this.utils.readFile(this.babelrc);
657+
if (json && json.env && json.env[key]) {
658+
process.env.BABEL_ENV = key;
652659
}
660+
} catch (e) {
661+
/* istanbul ignore next */
653662
}
654663
}
655664
}

lib/client.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ class WebpackClientBuilder extends WebpackBaseBuilder {
77
constructor(config) {
88
super(config);
99
this.type = WebpackClientBuilder.TYPE;
10-
this.setBabelENV('web');
1110
this.setDevTool(config.devtool);
1211
this.setPack(config.packs);
1312
this.setTarget(WebpackClientBuilder.TARGET);
1413
this.setCommonsChunkLib();
14+
this.setCreateQueue(this.setBabelENV);
1515
this.setCreateQueue(this.createDllAssetPlugin);
1616
this.setCreateQueue(this.createDllReferencePlugin);
1717
this.setCreateQueue(this.createHTML);

lib/config.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class Config {
5353
this.initEntry(this.config);
5454
this.initialize(this.config);
5555
this.initEnv(this.config);
56+
this.initBabelrc();
5657
}
5758

5859
// get config() {
@@ -151,6 +152,16 @@ class Config {
151152
}
152153
}
153154

155+
initBabelrc() {
156+
const projectBabelrc = path.join(this.baseDir, '.babelrc');
157+
if (fs.existsSync(projectBabelrc)) {
158+
this.projectBabelrc = projectBabelrc;
159+
this.babelrc = projectBabelrc;
160+
} else {
161+
this.babelrc = path.resolve(__dirname, '../config/.babelrc');
162+
}
163+
}
164+
154165
initialize(config) {
155166
this.webpackConfig = this.utils.cloneDeep(require('../config/webpack'));
156167
this.loaders = this.utils.cloneDeep(require('../config/loader'));
@@ -638,6 +649,12 @@ class Config {
638649
};
639650
}
640651

652+
setBabelrc(babelrc) {
653+
if (!this.projectBabelrc) {
654+
this.babelrc = babelrc;
655+
}
656+
}
657+
641658
static getDllConfig(dll) {
642659
return utils.getDllConfig(dll);
643660
}

lib/server.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ class WebpackServerBuilder extends WebpackBaseBuilder {
88
super(config);
99
this.ssr = true;
1010
this.type = WebpackServerBuilder.TYPE;
11-
this.setBabelENV('node');
1211
this.setTarget(WebpackServerBuilder.TARGET);
1312
this.setNode({ __filename: false, __dirname: false });
1413
this.setLibraryTarget('commonjs');
@@ -31,6 +30,7 @@ class WebpackServerBuilder extends WebpackBaseBuilder {
3130
};
3231
this.setExternals([nodeExternals(this.merge(defaultNodeExternals, this.config.nodeExternals))]);
3332
this.createFileName();
33+
this.setCreateQueue(this.setBabelENV);
3434
}
3535

3636
createFileName() {

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,8 @@
115115
"utils",
116116
"lib",
117117
"config",
118-
"tool"
118+
"tool",
119+
"config/.babelrc"
119120
],
120121
"nyc": {
121122
"exclude": [

test/server.test.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,4 +155,14 @@ describe('server.test.js', () => {
155155
const serviceworker = getPluginByLabel('serviceworker', plugins);
156156
expect(!!serviceworker).to.be.false;
157157
});
158+
it('should node console env dev test', () => {
159+
const builder = createBuilder({ env: 'dev' });
160+
const webpackConfig = builder.create();
161+
expect(webpackConfig.node.console).to.be.true;
162+
});
163+
it('should node console env prod test', () => {
164+
const builder = createBuilder({ env: 'prod' });
165+
const webpackConfig = builder.create();
166+
expect(webpackConfig.node.console).to.be.undefined;
167+
});
158168
});

utils/utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ utils.readFile = filepath => {
351351
} catch (e) {
352352
/* istanbul ignore next */
353353
}
354-
return null;
354+
return undefined;
355355
};
356356

357357

0 commit comments

Comments
 (0)