@qn-pandora/pandora-tools 2.0.12 → 2.0.14

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.json CHANGED
@@ -1,6 +1,30 @@
1
1
  {
2
2
  "name": "@qn-pandora/pandora-tools",
3
3
  "entries": [
4
+ {
5
+ "version": "2.0.14",
6
+ "tag": "@qn-pandora/pandora-tools_v2.0.14",
7
+ "date": "Fri, 25 Aug 2023 09:17:44 GMT",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "comment": "2023-08-25发包"
12
+ }
13
+ ]
14
+ }
15
+ },
16
+ {
17
+ "version": "2.0.13",
18
+ "tag": "@qn-pandora/pandora-tools_v2.0.13",
19
+ "date": "Thu, 24 Aug 2023 09:24:03 GMT",
20
+ "comments": {
21
+ "patch": [
22
+ {
23
+ "comment": "2023.08.24发包"
24
+ }
25
+ ]
26
+ }
27
+ },
4
28
  {
5
29
  "version": "2.0.12",
6
30
  "tag": "@qn-pandora/pandora-tools_v2.0.12",
package/CHANGELOG.md CHANGED
@@ -1,25 +1,36 @@
1
1
  # Change Log - @qn-pandora/pandora-tools
2
2
 
3
- This log was last generated on Tue, 23 May 2023 03:12:29 GMT and should not be manually modified.
3
+ This log was last generated on Fri, 25 Aug 2023 09:17:44 GMT and should not be manually modified.
4
4
 
5
- ## 2.0.12
5
+ ## 2.0.14
6
+ Fri, 25 Aug 2023 09:17:44 GMT
7
+
8
+ ### Patches
9
+
10
+ - 2023-08-25发包
11
+
12
+ ## 2.0.13
13
+ Thu, 24 Aug 2023 09:24:03 GMT
14
+
15
+ ### Patches
16
+
17
+ - 2023.08.24发包
6
18
 
19
+ ## 2.0.12
7
20
  Tue, 23 May 2023 03:12:29 GMT
8
21
 
9
22
  ### Patches
10
23
 
11
- - 2023.05.23 发布
24
+ - 2023.05.23发布
12
25
 
13
26
  ## 2.0.11
14
-
15
27
  Wed, 19 Apr 2023 03:15:25 GMT
16
28
 
17
29
  ### Patches
18
30
 
19
- - 2023.04.19 发包
31
+ - 2023.04.19发包
20
32
 
21
33
  ## 2.0.10
22
-
23
34
  Tue, 04 Apr 2023 08:26:02 GMT
24
35
 
25
36
  ### Patches
@@ -27,23 +38,20 @@ Tue, 04 Apr 2023 08:26:02 GMT
27
38
  - 2023.04.04
28
39
 
29
40
  ## 2.0.9
30
-
31
41
  Thu, 23 Mar 2023 07:12:05 GMT
32
42
 
33
43
  ### Patches
34
44
 
35
- - 2023.03.23 发布
45
+ - 2023.03.23发布
36
46
 
37
47
  ## 2.0.8
38
-
39
48
  Mon, 13 Mar 2023 11:30:17 GMT
40
49
 
41
50
  ### Patches
42
51
 
43
- - 2023.03.13 发布
52
+ - 2023.03.13发布
44
53
 
45
54
  ## 2.0.7
46
-
47
55
  Wed, 15 Feb 2023 09:26:50 GMT
48
56
 
49
57
  ### Patches
@@ -51,7 +59,6 @@ Wed, 15 Feb 2023 09:26:50 GMT
51
59
  - 2023.02.15 发布
52
60
 
53
61
  ## 2.0.6
54
-
55
62
  Wed, 11 Jan 2023 08:25:05 GMT
56
63
 
57
64
  ### Patches
@@ -59,7 +66,6 @@ Wed, 11 Jan 2023 08:25:05 GMT
59
66
  - 2023-01-11 发布
60
67
 
61
68
  ## 2.0.5
62
-
63
69
  Tue, 10 Jan 2023 03:03:58 GMT
64
70
 
65
71
  ### Patches
@@ -67,39 +73,34 @@ Tue, 10 Jan 2023 03:03:58 GMT
67
73
  - 2023-01-10 发布
68
74
 
69
75
  ## 2.0.4
70
-
71
76
  Tue, 29 Nov 2022 03:37:07 GMT
72
77
 
73
78
  ### Patches
74
79
 
75
- - 2022.11.29 发布
80
+ - 2022.11.29发布
76
81
 
77
82
  ## 2.0.3
78
-
79
83
  Fri, 25 Nov 2022 06:55:56 GMT
80
84
 
81
85
  ### Patches
82
86
 
83
- - 2022-12-25 发布
87
+ - 2022-12-25发布
84
88
 
85
89
  ## 2.0.2
86
-
87
90
  Wed, 06 Jul 2022 07:32:15 GMT
88
91
 
89
92
  ### Patches
90
93
 
91
- - 07 06 日发布
94
+ - 07月06日发布
92
95
 
93
96
  ## 2.0.1
94
-
95
97
  Wed, 29 Jun 2022 08:28:54 GMT
96
98
 
97
99
  ### Patches
98
100
 
99
- - app 脚手架升级新低代码平台,增强 searchContainer
101
+ - app脚手架升级新低代码平台,增强searchContainer
100
102
 
101
103
  ## 2.0.0
102
-
103
104
  Tue, 14 Jun 2022 09:21:39 GMT
104
105
 
105
106
  ### Breaking changes
@@ -107,9 +108,9 @@ Tue, 14 Jun 2022 09:21:39 GMT
107
108
  - 很久没发版了,统一发个大版本
108
109
 
109
110
  ## 1.0.0
110
-
111
111
  Mon, 20 Dec 2021 11:46:43 GMT
112
112
 
113
113
  ### Breaking changes
114
114
 
115
- - 仓库迁移至 rush 后统一发个大版本
115
+ - 仓库迁移至rush后统一发个大版本
116
+
package/README.md CHANGED
@@ -1,19 +1,19 @@
1
- # pandora-tools
2
-
3
- develop and build pandora lib
4
-
5
- ## Install
6
-
7
- ``` bash
8
- # run in terminal
9
- yarn add @qn-pandora/pandora-tools -D
10
- # or
11
- npm install @qn-pandora/pandora-tools -dev
12
- ```
13
-
14
- ## Usage
15
-
16
- ``` bash
17
- # run this command to get help
18
- pandora-tools --help
19
- ```
1
+ # pandora-tools
2
+
3
+ develop and build pandora lib
4
+
5
+ ## Install
6
+
7
+ ``` bash
8
+ # run in terminal
9
+ yarn add @qn-pandora/pandora-tools -D
10
+ # or
11
+ npm install @qn-pandora/pandora-tools -dev
12
+ ```
13
+
14
+ ## Usage
15
+
16
+ ``` bash
17
+ # run this command to get help
18
+ pandora-tools --help
19
+ ```
package/bin/pandora-tools CHANGED
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env node
2
-
3
- require('../src/cli')
1
+ #!/usr/bin/env node
2
+
3
+ require('../src/cli')
package/package.json CHANGED
@@ -1,69 +1,69 @@
1
- {
2
- "name": "@qn-pandora/pandora-tools",
3
- "version": "2.0.12",
4
- "description": "Pandora Lib 常用开发&打包工具集",
5
- "author": "pandora <pandora@qiniu.com>",
6
- "homepage": "https://github.com/qbox/phoenix#readme",
7
- "license": "ISC",
8
- "main": "src/index.js",
9
- "bin": {
10
- "pandora-tools": "./bin/pandora-tools"
11
- },
12
- "files": [
13
- "/bin",
14
- "/src"
15
- ],
16
- "scripts": {
17
- "build": "exit 0",
18
- "lint": "exit 0"
19
- },
20
- "repository": {
21
- "type": "git",
22
- "url": "git+https://github.com/qbox/phoenix.git"
23
- },
24
- "bugs": {
25
- "url": "https://github.com/qbox/phoenix/issues"
26
- },
27
- "dependencies": {
28
- "@types/classnames": "^2.2.7",
29
- "@types/lodash": "^4.14.152",
30
- "@types/react": "^16.14.5",
31
- "@types/node": "^14.0.12",
32
- "gulp": "^4.0.2",
33
- "gulp-less": "^4.0.1",
34
- "gulp-typescript": "^6.0.0-alpha.1",
35
- "less-plugin-autoprefix": "^2.0.0",
36
- "merge2": "^1.4.1",
37
- "oclif": "^1.16.1",
38
- "react-docgen-typescript-loader": "^3.7.2",
39
- "rimraf": "^3.0.2",
40
- "through2": "^4.0.2",
41
- "webpack": "^4.35.3",
42
- "@oclif/command": "^1",
43
- "@oclif/errors": "~1.3.5",
44
- "classnames": "^2.2.6",
45
- "@storybook/react": "6.4.9",
46
- "@storybook/theming": "6.4.9",
47
- "@storybook/components": "6.4.9",
48
- "@storybook/addon-docs": "6.4.9",
49
- "babel-loader": "^8.1.0",
50
- "ts-loader": "^7.0.5",
51
- "@babel/core": "^7.19.6",
52
- "style-loader": "^0.23.1",
53
- "css-loader": "^3.0.0",
54
- "less-loader": "^5.0.0",
55
- "@mdx-js/loader": "^1.5.1",
56
- "react-is": "^16.8.0",
57
- "lodash": "^4.17.15",
58
- "antd": "4.17.1"
59
- },
60
- "devDependencies": {
61
- "react": "^16.8.6"
62
- },
63
- "peerDependencies": {
64
- "react": "^16.8.6"
65
- },
66
- "oclif": {
67
- "commands": "./src/cli/commands"
68
- }
1
+ {
2
+ "name": "@qn-pandora/pandora-tools",
3
+ "version": "2.0.14",
4
+ "description": "Pandora Lib 常用开发&打包工具集",
5
+ "author": "pandora <pandora@qiniu.com>",
6
+ "homepage": "https://github.com/qbox/phoenix#readme",
7
+ "license": "ISC",
8
+ "main": "src/index.js",
9
+ "bin": {
10
+ "pandora-tools": "./bin/pandora-tools"
11
+ },
12
+ "files": [
13
+ "/bin",
14
+ "/src"
15
+ ],
16
+ "scripts": {
17
+ "build": "exit 0",
18
+ "lint": "exit 0"
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/qbox/phoenix.git"
23
+ },
24
+ "bugs": {
25
+ "url": "https://github.com/qbox/phoenix/issues"
26
+ },
27
+ "dependencies": {
28
+ "@types/classnames": "^2.2.7",
29
+ "@types/lodash": "^4.14.152",
30
+ "@types/react": "^16.14.5",
31
+ "@types/node": "^14.0.12",
32
+ "gulp": "^4.0.2",
33
+ "gulp-less": "^4.0.1",
34
+ "gulp-typescript": "^6.0.0-alpha.1",
35
+ "less-plugin-autoprefix": "^2.0.0",
36
+ "merge2": "^1.4.1",
37
+ "oclif": "^1.16.1",
38
+ "react-docgen-typescript-loader": "^3.7.2",
39
+ "rimraf": "^3.0.2",
40
+ "through2": "^4.0.2",
41
+ "webpack": "^4.35.3",
42
+ "@oclif/command": "^1",
43
+ "@oclif/errors": "~1.3.5",
44
+ "classnames": "^2.2.6",
45
+ "@storybook/react": "6.4.9",
46
+ "@storybook/theming": "6.4.9",
47
+ "@storybook/components": "6.4.9",
48
+ "@storybook/addon-docs": "6.4.9",
49
+ "babel-loader": "^8.1.0",
50
+ "ts-loader": "^7.0.5",
51
+ "@babel/core": "^7.19.6",
52
+ "style-loader": "^0.23.1",
53
+ "css-loader": "^3.0.0",
54
+ "less-loader": "^5.0.0",
55
+ "@mdx-js/loader": "^1.5.1",
56
+ "react-is": "^16.8.0",
57
+ "lodash": "^4.17.15",
58
+ "antd": "4.17.1"
59
+ },
60
+ "devDependencies": {
61
+ "react": "^16.8.6"
62
+ },
63
+ "peerDependencies": {
64
+ "react": "^16.8.6"
65
+ },
66
+ "oclif": {
67
+ "commands": "./src/cli/commands"
68
+ }
69
69
  }
@@ -1,32 +1,32 @@
1
- const { Command } = require('@oclif/command')
2
- const runTask = require('../../index')
3
- const { initBuildContext } = require('../../projectHelper')
4
-
5
- class BuildCommand extends Command {
6
- async run() {
7
- initBuildContext()
8
-
9
- const { type } = this.parse(BuildCommand).args
10
- runTask('compileTs:' + type)
11
- }
12
- }
13
-
14
- BuildCommand.description = `Build project to esm or cjs
15
- this command will
16
- 1. build .ts, .tsx
17
- 2. copy .less
18
- 3. generate index.less which import all .less files
19
- 4. build all .less to .css
20
- you can set esmDir, cjsDir, srcDir in pandora-tools.config.json`
21
-
22
- BuildCommand.args = [
23
- {
24
- name: 'type',
25
- require: true,
26
- description: 'module type',
27
- default: 'esm',
28
- options: ['esm', 'cjs']
29
- }
30
- ]
31
-
32
- module.exports = BuildCommand
1
+ const { Command } = require('@oclif/command')
2
+ const runTask = require('../../index')
3
+ const { initBuildContext } = require('../../projectHelper')
4
+
5
+ class BuildCommand extends Command {
6
+ async run() {
7
+ initBuildContext()
8
+
9
+ const { type } = this.parse(BuildCommand).args
10
+ runTask('compileTs:' + type)
11
+ }
12
+ }
13
+
14
+ BuildCommand.description = `Build project to esm or cjs
15
+ this command will
16
+ 1. build .ts, .tsx
17
+ 2. copy .less
18
+ 3. generate index.less which import all .less files
19
+ 4. build all .less to .css
20
+ you can set esmDir, cjsDir, srcDir in pandora-tools.config.json`
21
+
22
+ BuildCommand.args = [
23
+ {
24
+ name: 'type',
25
+ require: true,
26
+ description: 'module type',
27
+ default: 'esm',
28
+ options: ['esm', 'cjs']
29
+ }
30
+ ]
31
+
32
+ module.exports = BuildCommand
@@ -1,72 +1,72 @@
1
- const { Command, flags } = require('@oclif/command')
2
- const { spawn } = require('child_process')
3
- const path = require('path')
4
- const { getProjectPath, initStorybookContext } = require('../../projectHelper')
5
-
6
- const pandoraToolsDir = path.resolve(__dirname, '../../../')
7
- const storybookConfigPath = path.resolve(pandoraToolsDir, './.storybook')
8
- const startOptions = {
9
- cmd: path.resolve(pandoraToolsDir, './node_modules/.bin/start-storybook'),
10
- supportFlags: ['config-dir', 'port', 'static-dir']
11
- }
12
- const buildOptions = {
13
- cmd: path.resolve(pandoraToolsDir, './node_modules/.bin/build-storybook'),
14
- supportFlags: ['config-dir', 'static-dir', 'output-dir']
15
- }
16
-
17
- class StoryBookCommand extends Command {
18
- async run() {
19
- initStorybookContext()
20
-
21
- const { args, flags } = this.parse(StoryBookCommand)
22
- const { cmd, supportFlags } =
23
- args.type === 'build' ? buildOptions : startOptions
24
-
25
- const params = supportFlags.map(key => {
26
- let value = flags[key]
27
- if (key === 'output-dir' && !value) {
28
- // 默认输出路径
29
- value = getProjectPath(value)
30
- }
31
- return value ? `--${key} ${value}` : ''
32
- })
33
-
34
- spawn(cmd, params, { stdio: 'inherit', shell: true, cwd: pandoraToolsDir })
35
- }
36
- }
37
-
38
- StoryBookCommand.description = `start or build storybook of components`
39
-
40
- StoryBookCommand.args = [
41
- {
42
- name: 'type',
43
- require: true,
44
- description: 'run type',
45
- default: 'start',
46
- options: ['start', 'build']
47
- }
48
- ]
49
-
50
- StoryBookCommand.flags = {
51
- 'config-dir': flags.string({
52
- char: 'c',
53
- default: storybookConfigPath,
54
- description: 'storybook config path'
55
- }),
56
- port: flags.integer({
57
- char: 'p',
58
- default: 9000,
59
- description: 'port of storybook run'
60
- }),
61
- 'static-dir': flags.string({
62
- char: 's',
63
- description: 'static directory'
64
- }),
65
- 'output-dir': flags.string({
66
- char: 'o',
67
- default: './storybook-static',
68
- description: 'output directory, relative to your project root'
69
- })
70
- }
71
-
72
- module.exports = StoryBookCommand
1
+ const { Command, flags } = require('@oclif/command')
2
+ const { spawn } = require('child_process')
3
+ const path = require('path')
4
+ const { getProjectPath, initStorybookContext } = require('../../projectHelper')
5
+
6
+ const pandoraToolsDir = path.resolve(__dirname, '../../../')
7
+ const storybookConfigPath = path.resolve(pandoraToolsDir, './.storybook')
8
+ const startOptions = {
9
+ cmd: path.resolve(pandoraToolsDir, './node_modules/.bin/start-storybook'),
10
+ supportFlags: ['config-dir', 'port', 'static-dir']
11
+ }
12
+ const buildOptions = {
13
+ cmd: path.resolve(pandoraToolsDir, './node_modules/.bin/build-storybook'),
14
+ supportFlags: ['config-dir', 'static-dir', 'output-dir']
15
+ }
16
+
17
+ class StoryBookCommand extends Command {
18
+ async run() {
19
+ initStorybookContext()
20
+
21
+ const { args, flags } = this.parse(StoryBookCommand)
22
+ const { cmd, supportFlags } =
23
+ args.type === 'build' ? buildOptions : startOptions
24
+
25
+ const params = supportFlags.map(key => {
26
+ let value = flags[key]
27
+ if (key === 'output-dir' && !value) {
28
+ // 默认输出路径
29
+ value = getProjectPath(value)
30
+ }
31
+ return value ? `--${key} ${value}` : ''
32
+ })
33
+
34
+ spawn(cmd, params, { stdio: 'inherit', shell: true, cwd: pandoraToolsDir })
35
+ }
36
+ }
37
+
38
+ StoryBookCommand.description = `start or build storybook of components`
39
+
40
+ StoryBookCommand.args = [
41
+ {
42
+ name: 'type',
43
+ require: true,
44
+ description: 'run type',
45
+ default: 'start',
46
+ options: ['start', 'build']
47
+ }
48
+ ]
49
+
50
+ StoryBookCommand.flags = {
51
+ 'config-dir': flags.string({
52
+ char: 'c',
53
+ default: storybookConfigPath,
54
+ description: 'storybook config path'
55
+ }),
56
+ port: flags.integer({
57
+ char: 'p',
58
+ default: 9000,
59
+ description: 'port of storybook run'
60
+ }),
61
+ 'static-dir': flags.string({
62
+ char: 's',
63
+ description: 'static directory'
64
+ }),
65
+ 'output-dir': flags.string({
66
+ char: 'o',
67
+ default: './storybook-static',
68
+ description: 'output directory, relative to your project root'
69
+ })
70
+ }
71
+
72
+ module.exports = StoryBookCommand
@@ -1,32 +1,32 @@
1
- const { Command } = require('@oclif/command')
2
- const runTask = require('../../index')
3
- const { initBuildContext } = require('../../projectHelper')
4
-
5
- class WatchLessCommand extends Command {
6
- async run() {
7
- initBuildContext()
8
-
9
- const { type } = this.parse(WatchLessCommand).args
10
- runTask('watchLess:' + type)
11
- }
12
- }
13
-
14
- WatchLessCommand.description = `Watch and build less files to esm or cjs
15
- this command will
16
- 1. watching less files, run next steps when less files changed
17
- 2. copy .less
18
- 3. generate index.less which import all .less files
19
- 4. build all .less to .css
20
- you can set esmDir, cjsDir, srcDir in pandora-tools.config.json`
21
-
22
- WatchLessCommand.args = [
23
- {
24
- name: 'type',
25
- require: true,
26
- description: 'module type',
27
- default: 'esm',
28
- options: ['esm', 'cjs']
29
- }
30
- ]
31
-
32
- module.exports = WatchLessCommand
1
+ const { Command } = require('@oclif/command')
2
+ const runTask = require('../../index')
3
+ const { initBuildContext } = require('../../projectHelper')
4
+
5
+ class WatchLessCommand extends Command {
6
+ async run() {
7
+ initBuildContext()
8
+
9
+ const { type } = this.parse(WatchLessCommand).args
10
+ runTask('watchLess:' + type)
11
+ }
12
+ }
13
+
14
+ WatchLessCommand.description = `Watch and build less files to esm or cjs
15
+ this command will
16
+ 1. watching less files, run next steps when less files changed
17
+ 2. copy .less
18
+ 3. generate index.less which import all .less files
19
+ 4. build all .less to .css
20
+ you can set esmDir, cjsDir, srcDir in pandora-tools.config.json`
21
+
22
+ WatchLessCommand.args = [
23
+ {
24
+ name: 'type',
25
+ require: true,
26
+ description: 'module type',
27
+ default: 'esm',
28
+ options: ['esm', 'cjs']
29
+ }
30
+ ]
31
+
32
+ module.exports = WatchLessCommand
package/src/cli/index.js CHANGED
@@ -1,6 +1,6 @@
1
- #!/usr/bin/env node
2
-
3
- require('@oclif/command')
4
- .run()
5
- .then(require('@oclif/command/flush'))
6
- .catch(require('@oclif/errors/handle'))
1
+ #!/usr/bin/env node
2
+
3
+ require('@oclif/command')
4
+ .run()
5
+ .then(require('@oclif/command/flush'))
6
+ .catch(require('@oclif/errors/handle'))
package/src/gulpfile.js CHANGED
@@ -1,89 +1,89 @@
1
- const gulp = require('gulp')
2
- const clear = require('./tasks/clear')
3
- const compileLess = require('./tasks/less')
4
- const compileTs = require('./tasks/ts')
5
- const {
6
- getProjectRoot,
7
- getToolsConfig,
8
- getPackageJSON
9
- } = require('./projectHelper')
10
-
11
- process.on('uncaughtException', function (err) {
12
- console.error(err.message)
13
- process.exit(1)
14
- })
15
-
16
- function compileLessToEsm() {
17
- const { srcDir, esmDir } = getToolsConfig()
18
- return compileLess(srcDir, esmDir)
19
- }
20
-
21
- function compileLessToCjs() {
22
- const { srcDir, libDir } = getToolsConfig()
23
- return compileLess(srcDir, libDir)
24
- }
25
-
26
- async function building() {
27
- console.log('building')
28
- }
29
-
30
- async function done() {
31
- console.log('done')
32
- }
33
-
34
- /**
35
- * watch 模式下构建报错不应该退出程序
36
- */
37
- function catchErr(fn) {
38
- return async () => {
39
- try {
40
- return await fn()
41
- } catch (e) {
42
- console.error(e)
43
- }
44
- }
45
- }
46
-
47
- gulp.task(
48
- 'compileTs:esm',
49
- gulp.series(
50
- () => clear(getToolsConfig().esmDir),
51
- () =>
52
- compileTs(getProjectRoot(), getToolsConfig().esmDir, {
53
- module: 'esnext'
54
- }),
55
- compileLessToEsm
56
- )
57
- )
58
-
59
- gulp.task(
60
- 'compileTs:cjs',
61
- gulp.series(
62
- () => clear(getToolsConfig().libDir),
63
- () =>
64
- compileTs(getProjectRoot(), getToolsConfig().libDir, {
65
- module: 'commonjs'
66
- }),
67
- compileLessToCjs
68
- )
69
- )
70
-
71
- gulp.task('watchLess:esm', function () {
72
- console.log(
73
- `[pandora tools] watchLess:esm watching ${getPackageJSON().name}...`
74
- )
75
- return gulp.watch(
76
- `${getToolsConfig().srcDir}/**/*.less`,
77
- gulp.series(building, catchErr(compileLessToEsm), done)
78
- )
79
- })
80
-
81
- gulp.task('watchLess:cjs', function () {
82
- console.log(
83
- `[pandora tools] watchLess:cjs watching ${getPackageJSON().name}...`
84
- )
85
- return gulp.watch(
86
- `${getToolsConfig().srcDir}/**/*.less`,
87
- gulp.series(building, catchErr(compileLessToCjs), done)
88
- )
89
- })
1
+ const gulp = require('gulp')
2
+ const clear = require('./tasks/clear')
3
+ const compileLess = require('./tasks/less')
4
+ const compileTs = require('./tasks/ts')
5
+ const {
6
+ getProjectRoot,
7
+ getToolsConfig,
8
+ getPackageJSON
9
+ } = require('./projectHelper')
10
+
11
+ process.on('uncaughtException', function (err) {
12
+ console.error(err.message)
13
+ process.exit(1)
14
+ })
15
+
16
+ function compileLessToEsm() {
17
+ const { srcDir, esmDir } = getToolsConfig()
18
+ return compileLess(srcDir, esmDir)
19
+ }
20
+
21
+ function compileLessToCjs() {
22
+ const { srcDir, libDir } = getToolsConfig()
23
+ return compileLess(srcDir, libDir)
24
+ }
25
+
26
+ async function building() {
27
+ console.log('building')
28
+ }
29
+
30
+ async function done() {
31
+ console.log('done')
32
+ }
33
+
34
+ /**
35
+ * watch 模式下构建报错不应该退出程序
36
+ */
37
+ function catchErr(fn) {
38
+ return async () => {
39
+ try {
40
+ return await fn()
41
+ } catch (e) {
42
+ console.error(e)
43
+ }
44
+ }
45
+ }
46
+
47
+ gulp.task(
48
+ 'compileTs:esm',
49
+ gulp.series(
50
+ () => clear(getToolsConfig().esmDir),
51
+ () =>
52
+ compileTs(getProjectRoot(), getToolsConfig().esmDir, {
53
+ module: 'esnext'
54
+ }),
55
+ compileLessToEsm
56
+ )
57
+ )
58
+
59
+ gulp.task(
60
+ 'compileTs:cjs',
61
+ gulp.series(
62
+ () => clear(getToolsConfig().libDir),
63
+ () =>
64
+ compileTs(getProjectRoot(), getToolsConfig().libDir, {
65
+ module: 'commonjs'
66
+ }),
67
+ compileLessToCjs
68
+ )
69
+ )
70
+
71
+ gulp.task('watchLess:esm', function () {
72
+ console.log(
73
+ `[pandora tools] watchLess:esm watching ${getPackageJSON().name}...`
74
+ )
75
+ return gulp.watch(
76
+ `${getToolsConfig().srcDir}/**/*.less`,
77
+ gulp.series(building, catchErr(compileLessToEsm), done)
78
+ )
79
+ })
80
+
81
+ gulp.task('watchLess:cjs', function () {
82
+ console.log(
83
+ `[pandora tools] watchLess:cjs watching ${getPackageJSON().name}...`
84
+ )
85
+ return gulp.watch(
86
+ `${getToolsConfig().srcDir}/**/*.less`,
87
+ gulp.series(building, catchErr(compileLessToCjs), done)
88
+ )
89
+ })
package/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
- const gulp = require('gulp')
2
- require('./gulpfile')
3
-
4
- module.exports = function(taskName) {
5
- gulp.task(taskName).apply(gulp)
6
- }
1
+ const gulp = require('gulp')
2
+ require('./gulpfile')
3
+
4
+ module.exports = function(taskName) {
5
+ gulp.task(taskName).apply(gulp)
6
+ }
@@ -1,102 +1,102 @@
1
- const fs = require('fs')
2
- const path = require('path')
3
-
4
- const projectConfigFile = path.join(__dirname, '../project.json')
5
-
6
- let isStorybookContext = true
7
-
8
- function initBuildContext() {
9
- initContext('build')
10
- }
11
-
12
- function initStorybookContext() {
13
- initContext('storybook')
14
- }
15
-
16
- function initContext(context) {
17
- if (context === 'build') {
18
- isStorybookContext = false
19
- }
20
-
21
- if (isStorybookContext) {
22
- const projectRoot = process.cwd()
23
- let data = {}
24
- try {
25
- data = getProjectConfig()
26
- } catch (e) {
27
- // do nothing
28
- }
29
- console.log('[pandora tools] init storybook project root: ', projectRoot)
30
- setProjectConfig({ ...data, projectRoot })
31
- }
32
- }
33
-
34
- function getProjectConfig() {
35
- if (fs.existsSync(projectConfigFile)) {
36
- const raw = fs.readFileSync(projectConfigFile)
37
- return JSON.parse(raw)
38
- }
39
- return {}
40
- }
41
-
42
- function setProjectConfig(config) {
43
- fs.writeFileSync(projectConfigFile, JSON.stringify(config))
44
- }
45
-
46
- function getProjectRoot() {
47
- let projectRoot = process.cwd()
48
- if (isStorybookContext) {
49
- try {
50
- const config = getProjectConfig()
51
- projectRoot = config.projectRoot
52
- } catch (e) {
53
- // do nothing
54
- }
55
- }
56
- return projectRoot
57
- }
58
-
59
- function getProjectPath(pathStr) {
60
- const projectRoot = getProjectRoot()
61
- return path.resolve(projectRoot, pathStr)
62
- }
63
-
64
- function getConfig(pathStr) {
65
- const configPath = getProjectPath(pathStr)
66
- if (fs.existsSync(configPath)) {
67
- return require(configPath)
68
- }
69
-
70
- return {}
71
- }
72
-
73
- function getToolsConfig(pathStr) {
74
- const toolsConfig = getConfig(pathStr || '.pandora-tools.config.js')
75
- return Object.assign(
76
- {
77
- srcDir: './src',
78
- esmDir: './es',
79
- libDir: './lib',
80
- mainFileName: 'index'
81
- },
82
- toolsConfig
83
- )
84
- }
85
-
86
- function getWebpackConfig(pathStr) {
87
- return getConfig(pathStr || 'webpack.config.js')
88
- }
89
-
90
- function getPackageJSON() {
91
- return getConfig('package.json')
92
- }
93
-
94
- module.exports = {
95
- initBuildContext,
96
- initStorybookContext,
97
- getProjectRoot,
98
- getProjectPath,
99
- getToolsConfig,
100
- getWebpackConfig,
101
- getPackageJSON
102
- }
1
+ const fs = require('fs')
2
+ const path = require('path')
3
+
4
+ const projectConfigFile = path.join(__dirname, '../project.json')
5
+
6
+ let isStorybookContext = true
7
+
8
+ function initBuildContext() {
9
+ initContext('build')
10
+ }
11
+
12
+ function initStorybookContext() {
13
+ initContext('storybook')
14
+ }
15
+
16
+ function initContext(context) {
17
+ if (context === 'build') {
18
+ isStorybookContext = false
19
+ }
20
+
21
+ if (isStorybookContext) {
22
+ const projectRoot = process.cwd()
23
+ let data = {}
24
+ try {
25
+ data = getProjectConfig()
26
+ } catch (e) {
27
+ // do nothing
28
+ }
29
+ console.log('[pandora tools] init storybook project root: ', projectRoot)
30
+ setProjectConfig({ ...data, projectRoot })
31
+ }
32
+ }
33
+
34
+ function getProjectConfig() {
35
+ if (fs.existsSync(projectConfigFile)) {
36
+ const raw = fs.readFileSync(projectConfigFile)
37
+ return JSON.parse(raw)
38
+ }
39
+ return {}
40
+ }
41
+
42
+ function setProjectConfig(config) {
43
+ fs.writeFileSync(projectConfigFile, JSON.stringify(config))
44
+ }
45
+
46
+ function getProjectRoot() {
47
+ let projectRoot = process.cwd()
48
+ if (isStorybookContext) {
49
+ try {
50
+ const config = getProjectConfig()
51
+ projectRoot = config.projectRoot
52
+ } catch (e) {
53
+ // do nothing
54
+ }
55
+ }
56
+ return projectRoot
57
+ }
58
+
59
+ function getProjectPath(pathStr) {
60
+ const projectRoot = getProjectRoot()
61
+ return path.resolve(projectRoot, pathStr)
62
+ }
63
+
64
+ function getConfig(pathStr) {
65
+ const configPath = getProjectPath(pathStr)
66
+ if (fs.existsSync(configPath)) {
67
+ return require(configPath)
68
+ }
69
+
70
+ return {}
71
+ }
72
+
73
+ function getToolsConfig(pathStr) {
74
+ const toolsConfig = getConfig(pathStr || '.pandora-tools.config.js')
75
+ return Object.assign(
76
+ {
77
+ srcDir: './src',
78
+ esmDir: './es',
79
+ libDir: './lib',
80
+ mainFileName: 'index'
81
+ },
82
+ toolsConfig
83
+ )
84
+ }
85
+
86
+ function getWebpackConfig(pathStr) {
87
+ return getConfig(pathStr || 'webpack.config.js')
88
+ }
89
+
90
+ function getPackageJSON() {
91
+ return getConfig('package.json')
92
+ }
93
+
94
+ module.exports = {
95
+ initBuildContext,
96
+ initStorybookContext,
97
+ getProjectRoot,
98
+ getProjectPath,
99
+ getToolsConfig,
100
+ getWebpackConfig,
101
+ getPackageJSON
102
+ }
@@ -1,6 +1,6 @@
1
- const rimraf = require('rimraf')
2
-
3
- module.exports = function(dir) {
4
- rimraf.sync(dir)
5
- return Promise.resolve()
6
- }
1
+ const rimraf = require('rimraf')
2
+
3
+ module.exports = function(dir) {
4
+ rimraf.sync(dir)
5
+ return Promise.resolve()
6
+ }
package/src/tasks/less.js CHANGED
@@ -1,64 +1,64 @@
1
- const gulp = require('gulp')
2
- const gulpLess = require('gulp-less')
3
- const path = require('path')
4
- const fs = require('fs')
5
- const through2 = require('through2')
6
- const LessAutoprefix = require('less-plugin-autoprefix')
7
-
8
- const autoprefix = new LessAutoprefix({ browsers: ['last 2 versions'] })
9
-
10
- function copyLess(srcDir, outDir) {
11
- const imports = []
12
- return new Promise(function (resolve, reject) {
13
- gulp
14
- .src(`${srcDir}/**/*.less`)
15
- .on('error', reject)
16
- .pipe(
17
- through2.obj(function (file, _, next) {
18
- this.push(file)
19
- const filePath = path.relative(outDir, file.path)
20
- imports.push(`@import './${filePath}';`)
21
- next()
22
- })
23
- )
24
- .on('error', reject)
25
- .pipe(gulp.dest(outDir))
26
- .on('error', reject)
27
- .on('finish', function () {
28
- if (imports.length === 0) {
29
- return
30
- }
31
- // when copy finish write root index.less
32
- fs.writeFileSync(
33
- path.resolve(outDir, 'index.less'),
34
- imports.join('\n'),
35
- 'utf8'
36
- )
37
- resolve()
38
- })
39
- })
40
- }
41
-
42
- function compileLess(srcDir, outDir) {
43
- return new Promise((resolve, reject) => {
44
- gulp
45
- .src(`${srcDir}/**/*.less`)
46
- .on('error', reject)
47
- .pipe(
48
- gulpLess({
49
- paths: [srcDir, 'node_modules'],
50
- plugins: [autoprefix],
51
- javascriptEnabled: true
52
- })
53
- )
54
- .on('error', reject)
55
- .pipe(gulp.dest(outDir))
56
- .on('error', reject)
57
- .on('finish', resolve)
58
- })
59
- }
60
-
61
- module.exports = async function (srcDir, outDir) {
62
- await copyLess(srcDir, outDir)
63
- await compileLess(outDir, outDir)
64
- }
1
+ const gulp = require('gulp')
2
+ const gulpLess = require('gulp-less')
3
+ const path = require('path')
4
+ const fs = require('fs')
5
+ const through2 = require('through2')
6
+ const LessAutoprefix = require('less-plugin-autoprefix')
7
+
8
+ const autoprefix = new LessAutoprefix({ browsers: ['last 2 versions'] })
9
+
10
+ function copyLess(srcDir, outDir) {
11
+ const imports = []
12
+ return new Promise(function (resolve, reject) {
13
+ gulp
14
+ .src(`${srcDir}/**/*.less`)
15
+ .on('error', reject)
16
+ .pipe(
17
+ through2.obj(function (file, _, next) {
18
+ this.push(file)
19
+ const filePath = path.relative(outDir, file.path)
20
+ imports.push(`@import './${filePath}';`)
21
+ next()
22
+ })
23
+ )
24
+ .on('error', reject)
25
+ .pipe(gulp.dest(outDir))
26
+ .on('error', reject)
27
+ .on('finish', function () {
28
+ if (imports.length === 0) {
29
+ return
30
+ }
31
+ // when copy finish write root index.less
32
+ fs.writeFileSync(
33
+ path.resolve(outDir, 'index.less'),
34
+ imports.join('\n'),
35
+ 'utf8'
36
+ )
37
+ resolve()
38
+ })
39
+ })
40
+ }
41
+
42
+ function compileLess(srcDir, outDir) {
43
+ return new Promise((resolve, reject) => {
44
+ gulp
45
+ .src(`${srcDir}/**/*.less`)
46
+ .on('error', reject)
47
+ .pipe(
48
+ gulpLess({
49
+ paths: [srcDir, 'node_modules'],
50
+ plugins: [autoprefix],
51
+ javascriptEnabled: true
52
+ })
53
+ )
54
+ .on('error', reject)
55
+ .pipe(gulp.dest(outDir))
56
+ .on('error', reject)
57
+ .on('finish', resolve)
58
+ })
59
+ }
60
+
61
+ module.exports = async function (srcDir, outDir) {
62
+ await copyLess(srcDir, outDir)
63
+ await compileLess(outDir, outDir)
64
+ }
package/src/tasks/ts.js CHANGED
@@ -1,54 +1,54 @@
1
- const path = require('path')
2
- const gulp = require('gulp')
3
- const tsGulp = require('gulp-typescript')
4
- const merge = require('merge2')
5
-
6
- module.exports = function(projectDir, outDir, extraTsConfig) {
7
- const tsProject = tsGulp.createProject(
8
- path.resolve(projectDir, 'tsconfig.json'),
9
- extraTsConfig
10
- )
11
- const tsResult = tsProject.src().pipe(tsProject())
12
- return merge([
13
- tsResult.js.pipe(gulp.dest(outDir)),
14
- tsResult.dts.pipe(gulp.dest(outDir))
15
- ])
16
- }
17
-
18
- /* function compileByWebpack(done) {
19
- rimraf.sync(distDir)
20
- process.env.RUN_ENV = 'PRODUCTION'
21
- webpack(getWebpackConfig(), (err, stats) => {
22
- if (err) {
23
- console.error(err.stack || err)
24
- if (err.details) {
25
- console.error(err.details)
26
- }
27
- return
28
- }
29
-
30
- const info = stats.toJson()
31
-
32
- if (stats.hasErrors()) {
33
- console.error(info.errors)
34
- }
35
-
36
- if (stats.hasWarnings()) {
37
- console.warn(info.warnings)
38
- }
39
-
40
- const buildInfo = stats.toString({
41
- colors: true,
42
- children: true,
43
- chunks: false,
44
- modules: false,
45
- chunkModules: false,
46
- hash: false,
47
- version: false
48
- })
49
- console.log(buildInfo)
50
-
51
- done(0)
52
- })
53
- }
54
- gulp.task('compileTs:dist', compileByWebpack)*/
1
+ const path = require('path')
2
+ const gulp = require('gulp')
3
+ const tsGulp = require('gulp-typescript')
4
+ const merge = require('merge2')
5
+
6
+ module.exports = function(projectDir, outDir, extraTsConfig) {
7
+ const tsProject = tsGulp.createProject(
8
+ path.resolve(projectDir, 'tsconfig.json'),
9
+ extraTsConfig
10
+ )
11
+ const tsResult = tsProject.src().pipe(tsProject())
12
+ return merge([
13
+ tsResult.js.pipe(gulp.dest(outDir)),
14
+ tsResult.dts.pipe(gulp.dest(outDir))
15
+ ])
16
+ }
17
+
18
+ /* function compileByWebpack(done) {
19
+ rimraf.sync(distDir)
20
+ process.env.RUN_ENV = 'PRODUCTION'
21
+ webpack(getWebpackConfig(), (err, stats) => {
22
+ if (err) {
23
+ console.error(err.stack || err)
24
+ if (err.details) {
25
+ console.error(err.details)
26
+ }
27
+ return
28
+ }
29
+
30
+ const info = stats.toJson()
31
+
32
+ if (stats.hasErrors()) {
33
+ console.error(info.errors)
34
+ }
35
+
36
+ if (stats.hasWarnings()) {
37
+ console.warn(info.warnings)
38
+ }
39
+
40
+ const buildInfo = stats.toString({
41
+ colors: true,
42
+ children: true,
43
+ chunks: false,
44
+ modules: false,
45
+ chunkModules: false,
46
+ hash: false,
47
+ version: false
48
+ })
49
+ console.log(buildInfo)
50
+
51
+ done(0)
52
+ })
53
+ }
54
+ gulp.task('compileTs:dist', compileByWebpack)*/