akfun 1.6.5 → 1.6.9

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "akfun",
3
- "version": "1.6.5",
3
+ "version": "1.6.9",
4
4
  "description": "前端脚手架:支持Vue技术栈和react技术栈",
5
5
  "keywords": [
6
6
  "前端工程",
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.ignoreNodeModules
17
- ? [nodeExternals()].concat(curConfig.webpack.externals)
18
- : curConfig.webpack.externals,
15
+ external: curConfig.webpack.externals,
19
16
  plugins: options.plugins
20
17
  });
21
18
 
@@ -37,8 +34,8 @@ module.exports = function (fileName, akfunConfig, _consoleTag) {
37
34
  // 参数中的config配置优先级最高
38
35
  config = deepMergeConfig(defaultConfig, akfunConfig);
39
36
  }
40
- const spinner = ora(`${consoleTag}开启esm lib库的构建能力...`).start();
41
- const curRollupConfig = rollupConfig(fileName); // 默认配置
37
+ const spinner = ora(`${consoleTag}开启esm模块构建能力...`).start();
38
+ const curRollupConfig = rollupConfig(fileName, config); // 默认配置
42
39
  const build2esm = config.build2esm; // 用户的项目配置
43
40
  if (build2esm && build2esm.input) {
44
41
  curRollupConfig.input = build2esm.input;
@@ -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 lib库构建完成`);
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 config = require('./index'); // 引入当前项目配置文件
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 (config.build2esm && config.build2esm.input) {
29
- rollupInput = config.build2esm.input;
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 (config.build2esm && config.build2esm.fileName) {
34
- curFileName = config.build2esm.fileName;
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: config.webpack.resolve.extensions,
45
- extensions: config.webpack.resolve.extensions,
46
- entries: config.webpack.resolve.alias
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: config.webpack.resolve.extensions
51
+ extensions: curConfig.webpack.resolve.extensions
50
52
  }),
51
53
  babel(babelConfig), // 备注,需要先babel()再commjs()
52
54
  vue(),
@@ -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, catchCurPackageJson } = require('../utils/pathUtils');
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 = (option) => {
37
- const curEnvConfig = option || {}; // 用于接收当前运行环境配置变量
27
+ module.exports = (_curEnvConfig, _curWebpackConfig) => {
28
+ const curEnvConfig = _curEnvConfig || {}; // 用于接收当前运行环境配置变量
29
+ const curWebpackConfig = _curWebpackConfig || config.webpack;
38
30
  // 获取当前项目目录
39
- const curProjectDir = getProjectDir(config.webpack.projectDir);
31
+ const curProjectDir = getProjectDir(curWebpackConfig.projectDir);
40
32
  const webpackConfig = {
41
- entry: config.webpack.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: config.webpack.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: config.webpack.createDeclaration || false,
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()].concat(config.webpack.externals)
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()].concat(config.webpack.externals)
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, // 线上开发环境中的取值