akfun 1.6.3 → 1.6.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/build2esm.js +3 -3
- package/src/config/rollup.config.js +13 -11
- package/src/utils/akfunParams.js +15 -0
- package/src/webpack/webpack.base.conf.js +10 -18
- package/src/webpack/webpack.dev.conf.js +1 -1
- package/src/webpack/webpack.library.conf.js +4 -2
- package/src/webpack/webpack.prod.conf.js +4 -2
package/package.json
CHANGED
package/src/build2esm.js
CHANGED
|
@@ -34,8 +34,8 @@ module.exports = function (fileName, akfunConfig, _consoleTag) {
|
|
|
34
34
|
// 参数中的config配置优先级最高
|
|
35
35
|
config = deepMergeConfig(defaultConfig, akfunConfig);
|
|
36
36
|
}
|
|
37
|
-
const spinner = ora(`${consoleTag}开启esm
|
|
38
|
-
const curRollupConfig = rollupConfig(fileName); // 默认配置
|
|
37
|
+
const spinner = ora(`${consoleTag}开启esm模块构建能力...`).start();
|
|
38
|
+
const curRollupConfig = rollupConfig(fileName, config); // 默认配置
|
|
39
39
|
const build2esm = config.build2esm; // 用户的项目配置
|
|
40
40
|
if (build2esm && build2esm.input) {
|
|
41
41
|
curRollupConfig.input = build2esm.input;
|
|
@@ -44,6 +44,6 @@ module.exports = function (fileName, akfunConfig, _consoleTag) {
|
|
|
44
44
|
curRollupConfig.output = build2esm.output;
|
|
45
45
|
}
|
|
46
46
|
build2esmFunc(curRollupConfig, config).then(() => {
|
|
47
|
-
spinner.succeed(`${consoleTag}esm
|
|
47
|
+
spinner.succeed(`${consoleTag}esm模块构建完成。`);
|
|
48
48
|
});
|
|
49
49
|
};
|
|
@@ -17,36 +17,38 @@ const nested = require('postcss-nested');
|
|
|
17
17
|
const postcssPresetEnv = require('postcss-preset-env');
|
|
18
18
|
// css代码压缩
|
|
19
19
|
const cssnano = require('cssnano');
|
|
20
|
-
|
|
21
20
|
const { resolveToCurrentRoot, resolveToCurrentDist } = require('../utils/pathUtils'); // 统一路径解析
|
|
22
21
|
const babelConfig = require('./babel.config'); // Babel的配置文件
|
|
23
|
-
const
|
|
22
|
+
const curProjectConfig = require('./index'); // 引入当前项目配置文件
|
|
23
|
+
const {buildBanner} = require("../utils/akfunParams");
|
|
24
24
|
|
|
25
|
-
module.exports = function(fileName) {
|
|
25
|
+
module.exports = function(fileName, akfunConfig) {
|
|
26
|
+
const curConfig = akfunConfig || curProjectConfig;
|
|
26
27
|
// 获取用户配置的构建入口文件
|
|
27
28
|
let rollupInput = resolveToCurrentRoot('src/main.js');
|
|
28
|
-
if (
|
|
29
|
-
rollupInput =
|
|
29
|
+
if (curConfig.build2esm && curConfig.build2esm.input) {
|
|
30
|
+
rollupInput = curConfig.build2esm.input;
|
|
30
31
|
}
|
|
31
32
|
let curFileName = fileName || 'index'; // 默认以"index.esm.js"输出
|
|
32
33
|
// 获取用户配置的构建输出文件名
|
|
33
|
-
if (
|
|
34
|
-
curFileName =
|
|
34
|
+
if (curConfig.build2esm && curConfig.build2esm.fileName) {
|
|
35
|
+
curFileName = curConfig.build2esm.fileName;
|
|
35
36
|
}
|
|
36
37
|
// 增加babel配置
|
|
37
38
|
babelConfig.babelHelpers = 'runtime';
|
|
38
39
|
|
|
39
40
|
return {
|
|
41
|
+
banner: buildBanner,
|
|
40
42
|
input: rollupInput,
|
|
41
43
|
// external:将模块视为外部模块,不会打包在库中(在akfun.config.js中配置)
|
|
42
44
|
plugins: [
|
|
43
45
|
alias({
|
|
44
|
-
resolve:
|
|
45
|
-
extensions:
|
|
46
|
-
entries:
|
|
46
|
+
resolve: curConfig.webpack.resolve.extensions,
|
|
47
|
+
extensions: curConfig.webpack.resolve.extensions,
|
|
48
|
+
entries: curConfig.webpack.resolve.alias
|
|
47
49
|
}),
|
|
48
50
|
nodeResolve({
|
|
49
|
-
extensions:
|
|
51
|
+
extensions: curConfig.webpack.resolve.extensions
|
|
50
52
|
}),
|
|
51
53
|
babel(babelConfig), // 备注,需要先babel()再commjs()
|
|
52
54
|
vue(),
|
package/src/utils/akfunParams.js
CHANGED
|
@@ -1,10 +1,25 @@
|
|
|
1
|
+
// 获取当前项目的package文件
|
|
2
|
+
const { catchCurPackageJson } = require('../utils/pathUtils');
|
|
3
|
+
const getConfigObj = require('../utils/getConfigObj');
|
|
4
|
+
const currentPackageJsonDir = catchCurPackageJson();
|
|
5
|
+
const currentPackageJson = getConfigObj(currentPackageJsonDir);
|
|
6
|
+
|
|
1
7
|
let consoleTag = '[akfun]'; // 输出标记
|
|
2
8
|
|
|
3
9
|
function setConsoleTag(newText) {
|
|
4
10
|
consoleTag = newText;
|
|
5
11
|
}
|
|
6
12
|
|
|
13
|
+
const buildBanner = [
|
|
14
|
+
`${currentPackageJson.name} v${currentPackageJson.version}`,
|
|
15
|
+
`author: ${currentPackageJson.author}`,
|
|
16
|
+
`build tool: AKFun`,
|
|
17
|
+
`build time: ${new Date().toString()}`,
|
|
18
|
+
`build tool info: https://github.com/wibetter/akfun`
|
|
19
|
+
].join('\n');
|
|
20
|
+
|
|
7
21
|
module.exports = {
|
|
22
|
+
buildBanner,
|
|
8
23
|
get curConsoleTag() {
|
|
9
24
|
return consoleTag;
|
|
10
25
|
},
|
|
@@ -5,27 +5,18 @@ const StyleLintPlugin = require('stylelint-webpack-plugin');
|
|
|
5
5
|
const VueLoaderPlugin = require('vue-loader/lib/plugin');
|
|
6
6
|
const utils = require('./loaderUtils');
|
|
7
7
|
const vueLoaderConfig = require('./vue-loader.conf');
|
|
8
|
-
const { resolve, resolveToCurrentRoot
|
|
9
|
-
const getConfigObj = require('../utils/getConfigObj');
|
|
8
|
+
const { resolve, resolveToCurrentRoot } = require('../utils/pathUtils');
|
|
10
9
|
const getProjectDir = require('../utils/getProjectDir');
|
|
11
10
|
const catchVuePages = require('../utils/catchVuePages'); // 用于获取当前项目中的vue单文件
|
|
12
11
|
// 引入当前项目配置文件
|
|
13
12
|
const config = require('../config/index');
|
|
14
13
|
const babelConfig = require('../config/babel.config'); // Babel的配置文件
|
|
14
|
+
const {buildBanner} = require("../utils/akfunParams");
|
|
15
15
|
|
|
16
|
-
// 获取当前项目的package文件
|
|
17
|
-
const currentPackageJsonDir = catchCurPackageJson();
|
|
18
|
-
const currentPackageJson = getConfigObj(currentPackageJsonDir);
|
|
19
16
|
|
|
20
17
|
// 生成构建头部信息
|
|
21
18
|
const BannerPack = new webpack.BannerPlugin({
|
|
22
|
-
banner:
|
|
23
|
-
`${currentPackageJson.name} v${currentPackageJson.version}`,
|
|
24
|
-
`author: ${currentPackageJson.author}`,
|
|
25
|
-
`build tool: AKFun`,
|
|
26
|
-
`build time: ${new Date().toString()}`,
|
|
27
|
-
`build tool info: https://github.com/wibetter/akfun`
|
|
28
|
-
].join('\n'),
|
|
19
|
+
banner: buildBanner,
|
|
29
20
|
entryOnly: true // 只在入口 chunks 文件中添加
|
|
30
21
|
});
|
|
31
22
|
|
|
@@ -33,12 +24,13 @@ const BannerPack = new webpack.BannerPlugin({
|
|
|
33
24
|
* webpack.base.conf.js
|
|
34
25
|
* 主要用于设置 rules 和 通用插件
|
|
35
26
|
*/
|
|
36
|
-
module.exports = (
|
|
37
|
-
const curEnvConfig =
|
|
27
|
+
module.exports = (_curEnvConfig, _curWebpackConfig) => {
|
|
28
|
+
const curEnvConfig = _curEnvConfig || {}; // 用于接收当前运行环境配置变量
|
|
29
|
+
const curWebpackConfig = _curWebpackConfig || config.webpack;
|
|
38
30
|
// 获取当前项目目录
|
|
39
|
-
const curProjectDir = getProjectDir(
|
|
31
|
+
const curProjectDir = getProjectDir(curWebpackConfig.projectDir);
|
|
40
32
|
const webpackConfig = {
|
|
41
|
-
entry:
|
|
33
|
+
entry: curWebpackConfig.entry,
|
|
42
34
|
/*
|
|
43
35
|
内置变量列表:
|
|
44
36
|
id: chunk的唯一标识,从0开始;
|
|
@@ -53,7 +45,7 @@ module.exports = (option) => {
|
|
|
53
45
|
/**
|
|
54
46
|
* 当webpack试图去加载模块的时候,它默认是查找以 .js 结尾的文件的
|
|
55
47
|
*/
|
|
56
|
-
resolve:
|
|
48
|
+
resolve: curWebpackConfig.resolve,
|
|
57
49
|
module: {
|
|
58
50
|
rules: [
|
|
59
51
|
{
|
|
@@ -78,7 +70,7 @@ module.exports = (option) => {
|
|
|
78
70
|
options: {
|
|
79
71
|
// configFile: path.resolve(__dirname, '../config/tsconfig.json')
|
|
80
72
|
compilerOptions: {
|
|
81
|
-
declaration:
|
|
73
|
+
declaration: curWebpackConfig.createDeclaration || false,
|
|
82
74
|
outDir: curEnvConfig.assetsRoot || './dist'
|
|
83
75
|
}
|
|
84
76
|
}
|
|
@@ -16,7 +16,7 @@ module.exports = (akfunConfig) => {
|
|
|
16
16
|
let config = akfunConfig || projectConfig; // 默认使用执行命令目录下的配置数据
|
|
17
17
|
const curEnvConfig = config.dev || {}; // 当前执行环境配置
|
|
18
18
|
// 获取webpack基本配置
|
|
19
|
-
const baseWebpackConfig = getBaseWebpackConfig(curEnvConfig);
|
|
19
|
+
const baseWebpackConfig = getBaseWebpackConfig(curEnvConfig, config.webpack);
|
|
20
20
|
|
|
21
21
|
// 获取页面模板地址
|
|
22
22
|
let curHtmlTemplate = path.resolve(__dirname, '../initData/template/index.html');
|
|
@@ -17,7 +17,7 @@ module.exports = (akfunConfig) => {
|
|
|
17
17
|
let config = akfunConfig || projectConfig; // 默认使用执行命令目录下的配置数据
|
|
18
18
|
const curEnvConfig = config.build2lib || {}; // 当前执行环境配置
|
|
19
19
|
// 获取webpack基本配置
|
|
20
|
-
const baseWebpackConfig = getBaseWebpackConfig(curEnvConfig);
|
|
20
|
+
const baseWebpackConfig = getBaseWebpackConfig(curEnvConfig, config.webpack);
|
|
21
21
|
|
|
22
22
|
const webpackLibConfig = merge(baseWebpackConfig, {
|
|
23
23
|
mode: curEnvConfig.NODE_ENV, // production 模式,会启动UglifyJsPlugin服务
|
|
@@ -37,7 +37,9 @@ module.exports = (akfunConfig) => {
|
|
|
37
37
|
},
|
|
38
38
|
devtool: curEnvConfig.productionSourceMap ? '#source-map' : false, // '#source-map': 源码,false:压缩代码
|
|
39
39
|
externals: config.webpack.ignoreNodeModules
|
|
40
|
-
? [nodeExternals(
|
|
40
|
+
? [nodeExternals({
|
|
41
|
+
allowList: config.webpack.allowList ? config.webpack.allowList : []
|
|
42
|
+
})].concat(config.webpack.externals)
|
|
41
43
|
: config.webpack.externals,
|
|
42
44
|
plugins: [
|
|
43
45
|
new webpack.DefinePlugin({
|
|
@@ -26,7 +26,7 @@ module.exports = (akfunConfig) => {
|
|
|
26
26
|
let config = akfunConfig || projectConfig; // 默认使用执行命令目录下的配置数据
|
|
27
27
|
const curEnvConfig = config.build || {}; // 当前执行环境配置
|
|
28
28
|
// 获取webpack基本配置
|
|
29
|
-
const baseWebpackConfig = getBaseWebpackConfig(curEnvConfig);
|
|
29
|
+
const baseWebpackConfig = getBaseWebpackConfig(curEnvConfig, config.webpack);
|
|
30
30
|
// 获取页面模板地址
|
|
31
31
|
let curHtmlTemplate = path.resolve(__dirname, '../initData/template/index.html');
|
|
32
32
|
if (config.webpack.template) {
|
|
@@ -56,7 +56,9 @@ module.exports = (akfunConfig) => {
|
|
|
56
56
|
})
|
|
57
57
|
},
|
|
58
58
|
externals: config.webpack.ignoreNodeModules
|
|
59
|
-
? [nodeExternals(
|
|
59
|
+
? [nodeExternals({
|
|
60
|
+
allowList: config.webpack.allowList ? config.webpack.allowList : []
|
|
61
|
+
})].concat(config.webpack.externals)
|
|
60
62
|
: config.webpack.externals,
|
|
61
63
|
// devtool: '#cheap-module-eval-source-map', // 本地开发环境中的取值
|
|
62
64
|
devtool: curEnvConfig.productionSourceMap ? '#source-map' : false, // 线上开发环境中的取值
|