@qn-pandora/pandora-tools 1.1.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.json +5 -5
- package/CHANGELOG.md +8 -7
- package/package.json +8 -10
- package/src/cli/commands/storybook.js +1 -1
- package/src/cli/commands/watchLess.js +32 -0
- package/src/gulpfile.js +58 -9
- package/src/projectHelper.js +0 -1
- package/src/tasks/less.js +46 -36
package/CHANGELOG.json
CHANGED
@@ -2,13 +2,13 @@
|
|
2
2
|
"name": "@qn-pandora/pandora-tools",
|
3
3
|
"entries": [
|
4
4
|
{
|
5
|
-
"version": "
|
6
|
-
"tag": "@qn-pandora/pandora-
|
7
|
-
"date": "Tue,
|
5
|
+
"version": "2.0.0",
|
6
|
+
"tag": "@qn-pandora/pandora-tools_v2.0.0",
|
7
|
+
"date": "Tue, 14 Jun 2022 09:21:39 GMT",
|
8
8
|
"comments": {
|
9
|
-
"
|
9
|
+
"major": [
|
10
10
|
{
|
11
|
-
"comment": "
|
11
|
+
"comment": "很久没发版了,统一发个大版本"
|
12
12
|
}
|
13
13
|
]
|
14
14
|
}
|
package/CHANGELOG.md
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
# Change Log - @qn-pandora/pandora-tools
|
2
2
|
|
3
|
-
This log was last generated on Tue,
|
3
|
+
This log was last generated on Tue, 14 Jun 2022 09:21:39 GMT and should not be manually modified.
|
4
4
|
|
5
|
-
##
|
6
|
-
Tue, 15 Mar 2022 12:05:29 GMT
|
5
|
+
## 2.0.0
|
7
6
|
|
8
|
-
|
7
|
+
Tue, 14 Jun 2022 09:21:39 GMT
|
9
8
|
|
10
|
-
|
9
|
+
### Breaking changes
|
10
|
+
|
11
|
+
- 很久没发版了,统一发个大版本
|
11
12
|
|
12
13
|
## 1.0.0
|
14
|
+
|
13
15
|
Mon, 20 Dec 2021 11:46:43 GMT
|
14
16
|
|
15
17
|
### Breaking changes
|
16
18
|
|
17
|
-
- 仓库迁移至rush后统一发个大版本
|
18
|
-
|
19
|
+
- 仓库迁移至 rush 后统一发个大版本
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@qn-pandora/pandora-tools",
|
3
|
-
"version": "
|
3
|
+
"version": "2.0.0",
|
4
4
|
"description": "Pandora Lib 常用开发&打包工具集",
|
5
5
|
"author": "pandora <pandora@qiniu.com>",
|
6
6
|
"homepage": "https://github.com/qbox/phoenix#readme",
|
@@ -44,7 +44,7 @@
|
|
44
44
|
"webpack": "^4.35.3",
|
45
45
|
"@oclif/command": "^1",
|
46
46
|
"@oclif/errors": "~1.3.5",
|
47
|
-
"classnames": "^2.
|
47
|
+
"classnames": "^2.2.6",
|
48
48
|
"@storybook/react": "6.4.9",
|
49
49
|
"@storybook/theming": "6.4.9",
|
50
50
|
"@storybook/components": "6.4.9",
|
@@ -56,19 +56,17 @@
|
|
56
56
|
"css-loader": "^3.0.0",
|
57
57
|
"less-loader": "^5.0.0",
|
58
58
|
"@mdx-js/loader": "^1.5.1",
|
59
|
-
"react-is": "^16.8.0"
|
59
|
+
"react-is": "^16.8.0",
|
60
|
+
"lodash": "^4.17.15",
|
61
|
+
"antd": "4.17.1"
|
60
62
|
},
|
61
63
|
"devDependencies": {
|
62
|
-
"
|
63
|
-
"react": "^16.8.6",
|
64
|
-
"antd": "4.16.9"
|
64
|
+
"react": "^16.8.6"
|
65
65
|
},
|
66
66
|
"peerDependencies": {
|
67
|
-
"
|
68
|
-
"react": "^16.8.6",
|
69
|
-
"antd": "4.16.9"
|
67
|
+
"react": "^16.8.6"
|
70
68
|
},
|
71
69
|
"oclif": {
|
72
70
|
"commands": "./src/cli/commands"
|
73
71
|
}
|
74
|
-
}
|
72
|
+
}
|
@@ -0,0 +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
|
package/src/gulpfile.js
CHANGED
@@ -2,13 +2,48 @@ const gulp = require('gulp')
|
|
2
2
|
const clear = require('./tasks/clear')
|
3
3
|
const compileLess = require('./tasks/less')
|
4
4
|
const compileTs = require('./tasks/ts')
|
5
|
-
const {
|
5
|
+
const {
|
6
|
+
getProjectRoot,
|
7
|
+
getToolsConfig,
|
8
|
+
getPackageJSON
|
9
|
+
} = require('./projectHelper')
|
6
10
|
|
7
11
|
process.on('uncaughtException', function (err) {
|
8
12
|
console.error(err.message)
|
9
13
|
process.exit(1)
|
10
14
|
})
|
11
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
|
+
|
12
47
|
gulp.task(
|
13
48
|
'compileTs:esm',
|
14
49
|
gulp.series(
|
@@ -17,10 +52,7 @@ gulp.task(
|
|
17
52
|
compileTs(getProjectRoot(), getToolsConfig().esmDir, {
|
18
53
|
module: 'esnext'
|
19
54
|
}),
|
20
|
-
|
21
|
-
const { srcDir, esmDir } = getToolsConfig()
|
22
|
-
return compileLess(srcDir, esmDir)
|
23
|
-
}
|
55
|
+
compileLessToEsm
|
24
56
|
)
|
25
57
|
)
|
26
58
|
|
@@ -32,9 +64,26 @@ gulp.task(
|
|
32
64
|
compileTs(getProjectRoot(), getToolsConfig().libDir, {
|
33
65
|
module: 'commonjs'
|
34
66
|
}),
|
35
|
-
|
36
|
-
const { srcDir, libDir } = getToolsConfig()
|
37
|
-
return compileLess(srcDir, libDir)
|
38
|
-
}
|
67
|
+
compileLessToCjs
|
39
68
|
)
|
40
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/projectHelper.js
CHANGED
package/src/tasks/less.js
CHANGED
@@ -9,46 +9,56 @@ const autoprefix = new LessAutoprefix({ browsers: ['last 2 versions'] })
|
|
9
9
|
|
10
10
|
function copyLess(srcDir, outDir) {
|
11
11
|
const imports = []
|
12
|
-
return
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
.on('finish', function() {
|
24
|
-
if (imports.length === 0) {
|
25
|
-
return
|
26
|
-
}
|
27
|
-
// when copy finish write root index.less
|
28
|
-
fs.writeFileSync(
|
29
|
-
path.resolve(outDir, 'index.less'),
|
30
|
-
imports.join('\n'),
|
31
|
-
'utf8'
|
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
|
+
})
|
32
23
|
)
|
33
|
-
|
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
|
+
})
|
34
40
|
}
|
35
41
|
|
36
42
|
function compileLess(srcDir, outDir) {
|
37
|
-
return
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
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
|
+
})
|
47
59
|
}
|
48
60
|
|
49
|
-
module.exports = function(srcDir, outDir) {
|
50
|
-
|
51
|
-
|
52
|
-
() => compileLess(outDir, outDir)
|
53
|
-
)()
|
61
|
+
module.exports = async function (srcDir, outDir) {
|
62
|
+
await copyLess(srcDir, outDir)
|
63
|
+
await compileLess(outDir, outDir)
|
54
64
|
}
|