akfun 1.6.5 → 1.6.6
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 +2 -5
- 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 +1 -1
- package/src/webpack/webpack.prod.conf.js +1 -1
package/package.json
CHANGED
package/src/build2esm.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
const ora = require('ora');
|
|
2
2
|
const rollup = require('rollup');
|
|
3
|
-
const nodeExternals = require('webpack-node-externals');
|
|
4
3
|
const projectConfig = require('./config/index'); // 引入当前项目配置文件
|
|
5
4
|
const defaultConfig = require('./config/default.config');
|
|
6
5
|
const rollupConfig = require('./config/rollup.config'); // rollup的配置文件
|
|
@@ -13,9 +12,7 @@ async function build2esmFunc(options, curConfig) {
|
|
|
13
12
|
const bundle = await rollup.rollup({
|
|
14
13
|
input: options.input,
|
|
15
14
|
/** 直接使用webpack中的externals配置(避免再新增一个rollup对应的配置,增加用户的配置复杂度) */
|
|
16
|
-
external: curConfig.webpack.
|
|
17
|
-
? [nodeExternals()].concat(curConfig.webpack.externals)
|
|
18
|
-
: curConfig.webpack.externals,
|
|
15
|
+
external: curConfig.webpack.externals,
|
|
19
16
|
plugins: options.plugins
|
|
20
17
|
});
|
|
21
18
|
|
|
@@ -47,6 +44,6 @@ module.exports = function (fileName, akfunConfig, _consoleTag) {
|
|
|
47
44
|
curRollupConfig.output = build2esm.output;
|
|
48
45
|
}
|
|
49
46
|
build2esmFunc(curRollupConfig, config).then(() => {
|
|
50
|
-
spinner.succeed(`${consoleTag}esm
|
|
47
|
+
spinner.succeed(`${consoleTag}esm模块构建完成。`);
|
|
51
48
|
});
|
|
52
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服务
|
|
@@ -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) {
|