fix antd-tools

This commit is contained in:
tangjinzhou 2018-03-19 17:51:47 +08:00
parent 1a4c5f50c3
commit 349488027c
6 changed files with 277 additions and 159 deletions

1
.gitignore vendored
View File

@ -60,6 +60,7 @@ typings/
.DS_Store .DS_Store
dist dist
lib lib
es
# 备份文件 # 备份文件
/components/test/* /components/test/*

View File

@ -8,7 +8,7 @@
[![Travis branch](https://img.shields.io/travis/vueComponent/ant-design/master.svg?style=flat-square)](https://travis-ci.org/vueComponent/ant-design) [![Travis branch](https://img.shields.io/travis/vueComponent/ant-design/master.svg?style=flat-square)](https://travis-ci.org/vueComponent/ant-design)
[![Dependency Status](https://beta.gemnasium.com/badges/github.com/vueComponent/ant-design.svg)](https://beta.gemnasium.com/projects/github.com/vueComponent/ant-design) [![Dependency Status](https://beta.gemnasium.com/badges/github.com/vueComponent/ant-design.svg)](https://beta.gemnasium.com/projects/github.com/vueComponent/ant-design)
[![npm package](https://img.shields.io/npm/v/vue-antd3/next.svg?style=flat-square)](https://www.npmjs.org/package/vue-antd3) [![npm package](https://img.shields.io/npm/v/vue-antd3/next.svg?style=flat-square)](https://www.npmjs.org/package/vue-antd3)
[![NPM downloads](http://img.shields.io/npm/dm/vue-antd3.svg?style=flat-square)](https://npmjs.org/package/ant-design) [![NPM downloads](http://img.shields.io/npm/dm/vue-antd3.svg?style=flat-square)](https://npmjs.org/package/vue-antd3)
[![MIT License](https://img.shields.io/github/license/mashape/apistatus.svg)](https://www.npmjs.com/package/vue-antd3) [![MIT License](https://img.shields.io/github/license/mashape/apistatus.svg)](https://www.npmjs.com/package/vue-antd3)

View File

@ -2,14 +2,32 @@
module.exports = function (modules) { module.exports = function (modules) {
const plugins = [ const plugins = [
'babel-plugin-transform-vue-jsx', // require.resolve('babel-plugin-transform-vue-jsx'),
'babel-plugin-transform-object-rest-spread', require.resolve('babel-plugin-transform-es3-member-expression-literals'),
'babel-plugin-syntax-dynamic-import', require.resolve('babel-plugin-transform-es3-property-literals'),
'babel-plugin-transform-decorators-legacy', require.resolve('babel-plugin-transform-object-assign'),
require.resolve('babel-plugin-transform-object-rest-spread'),
require.resolve('babel-plugin-transform-decorators-legacy'),
] ]
plugins.push([require.resolve('babel-plugin-transform-runtime'), {
polyfill: false,
}])
return { return {
presets: ['babel-preset-env'], presets: [
[require.resolve('babel-preset-env'), {
modules,
targets: {
browsers: [
'last 2 versions',
'Firefox ESR',
'> 1%',
'ie >= 9',
'iOS >= 8',
'Android >= 4',
],
},
}],
],
plugins, plugins,
} }
} }

View File

@ -2,13 +2,13 @@
// const install = require('./install') // const install = require('./install')
// const runCmd = require('./runCmd') // const runCmd = require('./runCmd')
// const getBabelCommonConfig = require('./getBabelCommonConfig') const getBabelCommonConfig = require('./getBabelCommonConfig')
// const merge2 = require('merge2') const merge2 = require('merge2')
// const { execSync } = require('child_process') // const { execSync } = require('child_process')
// const through2 = require('through2') const through2 = require('through2')
// const transformLess = require('./transformLess') const transformLess = require('./transformLess')
const webpack = require('webpack') const webpack = require('webpack')
// const babel = require('gulp-babel') const babel = require('gulp-babel')
// const argv = require('minimist')(process.argv.slice(2)) // const argv = require('minimist')(process.argv.slice(2))
// const GitHub = require('github') // const GitHub = require('github')
@ -17,15 +17,18 @@ const webpack = require('webpack')
// const selfPackage = require('../package.json') // const selfPackage = require('../package.json')
// const chalk = require('chalk') // const chalk = require('chalk')
// const getNpmArgs = require('./utils/get-npm-args') // const getNpmArgs = require('./utils/get-npm-args')
// const getChangelog = require('./utils/getChangelog')
const path = require('path') const path = require('path')
// const watch = require('gulp-watch') // const watch = require('gulp-watch')
const gulp = require('gulp') const gulp = require('gulp')
// const fs = require('fs') // const fs = require('fs')
const rimraf = require('rimraf') const rimraf = require('rimraf')
const replaceLib = require('./replaceLib')
const stripCode = require('gulp-strip-code')
const cwd = process.cwd() const cwd = process.cwd()
// const libDir = path.join(cwd, 'lib') const libDir = path.join(cwd, 'lib')
const esDir = path.join(cwd, 'es')
function dist (done) { function dist (done) {
rimraf.sync(path.join(cwd, 'dist')) rimraf.sync(path.join(cwd, 'dist'))
@ -64,7 +67,73 @@ function dist (done) {
}) })
} }
function babelify (js, modules) {
const babelConfig = getBabelCommonConfig(modules)
delete babelConfig.cacheDirectory
if (modules === false) {
babelConfig.plugins.push(replaceLib)
} else {
babelConfig.plugins.push(require.resolve('babel-plugin-add-module-exports'))
}
let stream = js.pipe(babel(babelConfig))
.pipe(through2.obj(function z (file, encoding, next) {
this.push(file.clone())
if (file.path.match(/\/style\/index\.js/)) {
const content = file.contents.toString(encoding)
file.contents = Buffer.from(content
.replace(/\/style\/?'/g, '/style/css\'')
.replace(/\.less/g, '.css'))
file.path = file.path.replace(/index\.js/, 'css.js')
this.push(file)
next()
} else {
next()
}
}))
if (modules === false) {
stream = stream.pipe(stripCode({
start_comment: '@remove-on-es-build-begin',
end_comment: '@remove-on-es-build-end',
}))
}
return stream.pipe(gulp.dest(modules === false ? esDir : libDir))
}
function compile (modules) {
rimraf.sync(modules !== false ? libDir : esDir)
const less = gulp.src(['components/**/*.less'])
.pipe(through2.obj(function (file, encoding, next) {
this.push(file.clone())
if (file.path.match(/\/style\/index\.less$/) || file.path.match(/\/style\/v2-compatible-reset\.less$/)) {
transformLess(file.path).then((css) => {
file.contents = Buffer.from(css)
file.path = file.path.replace(/\.less$/, '.css')
this.push(file)
next()
}).catch((e) => {
console.error(e)
})
} else {
next()
}
}))
.pipe(gulp.dest(modules === false ? esDir : libDir))
const assets = gulp.src(['components/**/*.@(png|svg)']).pipe(gulp.dest(modules === false ? esDir : libDir))
const source = [
'components/**/*.js',
'components/**/*.jsx',
]
const tsFilesStream = babelify(gulp.src(source), modules)
return merge2([less, tsFilesStream, assets])
}
gulp.task('dist', (done) => { gulp.task('dist', (done) => {
dist(done) dist(done)
}) })
gulp.task('compile', ['compile-with-es'], () => {
compile()
})
gulp.task('compile-with-es', () => {
compile(false)
})

27
antd-tools/replaceLib.js Normal file
View File

@ -0,0 +1,27 @@
'use strict'
const { join, dirname } = require('path')
const fs = require('fs')
const cwd = process.cwd()
function replacePath (path) {
if (path.node.source && /\/lib\//.test(path.node.source.value)) {
const esModule = path.node.source.value.replace('/lib/', '/es/')
const esPath = dirname(join(cwd, `node_modules/${esModule}`))
if (fs.existsSync(esPath)) {
path.node.source.value = esModule
}
}
}
function replaceLib () {
return {
visitor: {
ImportDeclaration: replacePath,
ExportNamedDeclaration: replacePath,
},
}
}
module.exports = replaceLib

View File

@ -24,6 +24,7 @@
"start": "NODE_ENV=development ./node_modules/.bin/webpack-dev-server --open --hot", "start": "NODE_ENV=development ./node_modules/.bin/webpack-dev-server --open --hot",
"test": "karma start test/karma.conf.js --single-run", "test": "karma start test/karma.conf.js --single-run",
"build": "sh build.sh", "build": "sh build.sh",
"compile": "node antd-tools/cli/run.js compile",
"dist": "node antd-tools/cli/run.js dist", "dist": "node antd-tools/cli/run.js dist",
"lint": "eslint -c ./.eslintrc --fix --ext .jsx ./components", "lint": "eslint -c ./.eslintrc --fix --ext .jsx ./components",
"lint:style": "stylelint \"./examples/**/*.less\" --fix --syntax less" "lint:style": "stylelint \"./examples/**/*.less\" --fix --syntax less"
@ -41,23 +42,24 @@
"lint:style" "lint:style"
], ],
"devDependencies": { "devDependencies": {
"@babel/core": "^7.0.0-beta.42",
"@babel/preset-env": "^7.0.0-beta.42",
"autoprefixer": "^8.1.0", "autoprefixer": "^8.1.0",
"babel": "^6.23.0",
"babel-cli": "^6.26.0", "babel-cli": "^6.26.0",
"babel-core": "^6.26.0", "babel-core": "^6.26.0",
"babel-eslint": "^8.0.1", "babel-eslint": "^8.0.1",
"babel-helper-vue-jsx-merge-props": "^2.0.3", "babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-loader": "^7.1.2", "babel-loader": "^7.1.2",
"babel-plugin-add-module-exports": "^0.2.1", "babel-plugin-add-module-exports": "^0.2.1",
"babel-plugin-import": "^1.6.7", "babel-plugin-import": "^1.1.1",
"babel-plugin-istanbul": "^4.1.1", "babel-plugin-istanbul": "^4.1.1",
"babel-plugin-syntax-dynamic-import": "^6.18.0", "babel-plugin-syntax-dynamic-import": "^6.18.0",
"babel-plugin-syntax-jsx": "^6.18.0", "babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-decorators": "^6.24.1", "babel-plugin-transform-decorators": "^6.24.1",
"babel-plugin-transform-decorators-legacy": "^1.3.4", "babel-plugin-transform-decorators-legacy": "^1.3.4",
"babel-plugin-transform-es3-member-expression-literals": "^6.22.0",
"babel-plugin-transform-es3-property-literals": "^6.22.0",
"babel-plugin-transform-object-assign": "^6.22.0",
"babel-plugin-transform-object-rest-spread": "^6.26.0", "babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-plugin-transform-runtime": "~6.23.0",
"babel-plugin-transform-vue-jsx": "^3.7.0", "babel-plugin-transform-vue-jsx": "^3.7.0",
"babel-polyfill": "^6.26.0", "babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.6.1", "babel-preset-env": "^1.6.1",
@ -75,7 +77,8 @@
"extract-text-webpack-plugin": "^3.0.2", "extract-text-webpack-plugin": "^3.0.2",
"fetch-jsonp": "^1.1.3", "fetch-jsonp": "^1.1.3",
"gulp": "^3.9.1", "gulp": "^3.9.1",
"gulp-babel": "^8.0.0-beta.2", "gulp-babel": "^7.0.0",
"gulp-strip-code": "^0.1.4",
"highlight.js": "^9.12.0", "highlight.js": "^9.12.0",
"html-webpack-plugin": "^2.30.1", "html-webpack-plugin": "^2.30.1",
"istanbul-instrumenter-loader": "^3.0.0", "istanbul-instrumenter-loader": "^3.0.0",