Skip to content

Commit

Permalink
fix: set prefix support with easywebpack 3
Browse files Browse the repository at this point in the history
  • Loading branch information
hubcarl committed Mar 13, 2018
1 parent c8cb1ab commit ffb14a6
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 12 deletions.
3 changes: 2 additions & 1 deletion lib/builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ exports.getDllWebpackConfig = (config, option = {}) => {
const publicPath = config.publicPath;
const buildPath = config.buildPath;
const install = config.install;
const prefix = config.prefix;
const resolveLoader = config.resolveLoader;
const cdn = config.cdn;
const configPlugins = config.plugins || {};
Expand All @@ -50,7 +51,7 @@ exports.getDllWebpackConfig = (config, option = {}) => {
}
}
dllArray.forEach(item => {
const builderConfig = Object.assign({}, dllConfig, { entry: {}, dll: item, publicPath, buildPath, alias, externals, resolveLoader, install, cdn, plugins }, item.webpackConfig);
const builderConfig = Object.assign({}, dllConfig, { prefix, entry: {}, dll: item, publicPath, buildPath, alias, externals, resolveLoader, install, cdn, plugins }, item.webpackConfig);
if (option.onlyView || utils.checkDllUpdate(config, item)) {
dllWebpackConfig.push(new WebpackDllBuilder(builderConfig).create());
}
Expand Down
24 changes: 14 additions & 10 deletions lib/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,10 @@ class Config {
return this.dev && this.utils.isTrue(config.proxy);
}

get prefix() {
return this.config.prefix || '';
}

get nativeWebpackConfig() {
return this.configList.reduce((result, item) => {
return merge(result, this.analysisWebpackConfig(item));
Expand Down Expand Up @@ -249,35 +253,35 @@ class Config {

createFileName(config) {
if ((config.hash && this.utils.isTrue(config.fileHash)) || config.fileHash) {
this.setOutputFileName(`js/[name].[chunkhash:${config.hashLength}].js`);
this.setOutputFileChunkName(`js/chunk/[name].[chunkhash:${config.hashLength}].js`)
this.setOutputFileName(utils.assetsPath(this.prefix, `js/[name].[chunkhash:${config.hashLength}].js`));
this.setOutputFileChunkName(utils.assetsPath(this.prefix, `js/chunk/[name].[chunkhash:${config.hashLength}].js`));
} else {
this.setOutputFileName('js/[name].js');
this.setOutputFileChunkName('js/chunk/[name].js');
this.setOutputFileName(utils.assetsPath(this.prefix, 'js/[name].js'));
this.setOutputFileChunkName(utils.assetsPath(this.prefix, 'js/chunk/[name].js'));
}
}

createImageName(config) {
if ((config.hash && this.utils.isTrue(config.imageHash)) || config.imageHash) {
this.webpackInfo.imageName = `img/[name].[hash:${config.hashLength}].[ext]`;
this.webpackInfo.imageName = utils.assetsPath(this.prefix, `img/[name].[hash:${config.hashLength}].[ext]`);
} else {
this.webpackInfo.imageName = 'img/[name].[ext]';
this.webpackInfo.imageName = utils.assetsPath(this.prefix, 'img/[name].[ext]');
}
}

createCssName(config) {
if ((config.hash && this.utils.isTrue(config.cssHash)) || config.cssHash) {
this.webpackInfo.cssName = `css/[name].[contenthash:${config.hashLength}].css`;
this.webpackInfo.cssName = utils.assetsPath(this.prefix, `css/[name].[contenthash:${config.hashLength}].css`);
} else {
this.webpackInfo.cssName = 'css/[name].css';
this.webpackInfo.cssName = utils.assetsPath(this.prefix, 'css/[name].css');
}
}

createFrontName(config) {
if ((config.hash && this.utils.isTrue(config.fontHash)) || config.fontHash) {
this.webpackInfo.frontName = `font/[name].[hash:${config.hashLength}].[ext]`;
this.webpackInfo.frontName = utils.assetsPath(this.prefix, `font/[name].[hash:${config.hashLength}].[ext]`);
} else {
this.webpackInfo.frontName = 'font/[name].[ext]';
this.webpackInfo.frontName = utils.assetsPath(this.prefix, 'font/[name].[ext]');
}
}

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "easywebpack",
"version": "4.0.3",
"version": "4.0.4",
"description": "基于 Webpack 的前端构建工程化解决方案",
"keywords": [
"webpack",
Expand Down
11 changes: 11 additions & 0 deletions test/base.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,15 @@ describe('base.test.js', () => {
expect(webpackConfig.resolve.extensions).to.be.an('array').that.includes('.js');
});
});

describe('#webpack create test', () => {
it('should create webpack config', () => {
const builder = createBuilder({
prefix: 'static'
});
const webpackConfig = builder.create();
expect(webpackConfig.output.filename).to.equal('static/js/[name].js');
expect(webpackConfig.output.chunkFilename).to.equal('static/js/chunk/[name].js');
});
});
});

0 comments on commit ffb14a6

Please sign in to comment.