@qn-pandora/pandora-tools 2.0.12 → 2.0.14

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/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)*/