@alicd/crui-form-item
Version:
@alicd/next 中 Form.Item 组件能力的扩展,增加了错误的提示方式 showValidateType ,其他能力和 Form.Item 保持一致,必须放置在 Form 元素中
143 lines (129 loc) • 3.58 kB
JavaScript
import path from 'path';
import merge from 'webpack-merge';
import webpack from 'webpack';
import fs from 'fs';
import sass from 'node-sass';
import pkg from './package.json';
import HtmlWebpackPlugin from 'html-webpack-plugin';
import ExtractTextPlugin from 'extract-text-webpack-plugin';
const env = process.env.NODE_ENV || 'development';
const pkgName = pkg.name || '@alicd/form-item';
const nameArr = pkgName.split('/');
const entryName = nameArr[nameArr.length-1];
let config = {};
const common = {
module : {
rules : [
{
test : /\.jsx?$/,
exclude : /node_modules/,
use : ['babel-loader']
},
]
},
externals : {
'react' : 'React',
'react-dom' : 'ReactDOM'
},
resolve: {
extensions: ['.js', '.jsx']
}
};
if(env === 'development'){
config = merge(common, {
entry : {
'app' : path.resolve(__dirname,'examples/app.jsx')
},
output : {
filename : '[name].js',
path : path.resolve(__dirname,'site'),
sourceMapFilename: '[file].map'
},
module : {
rules : [
{
test : /\.scss|css$/,
use : ['style-loader', 'css-loader', 'sass-loader']
}
]
},
plugins : [
new HtmlWebpackPlugin({
template : path.resolve(__dirname,'examples/index.html'),
inject : 'body'
})
],
devtool: 'cheap-eval-source-map',
devServer: {
contentBase: path.resolve(__dirname,'site'),
compress: true,
port: 9000
}
})
}
if(env === 'production'){
config = merge(common, {
entry : {
[entryName] : [path.resolve(__dirname, 'src/style.js'), path.resolve(__dirname, 'src/index.jsx')]
},
output : {
filename : '[name].js',
path : path.resolve(__dirname, 'dist'),
libraryTarget: "umd",
library: pkgName,
sourceMapFilename: '[file].map',
publicPath : '/'
},
module : {
rules : [
{
test : /\.css|scss$/,
use : ExtractTextPlugin.extract({
fallback : 'style-loader',
use : ['css-loader', 'sass-loader']
})
}
]
},
devtool: 'source-map',
plugins : [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
}),
new webpack.optimize.UglifyJsPlugin({
sourceMap : true,
compress: {
warnings: false,
drop_console: false,
}
}),
new ExtractTextPlugin('[name].css')
]
})
/*
*@parse sass file to css
*/
const scssDir = './assets/'
fs.readdir(scssDir, (err, files) => {
if(err ) throw err
files.forEach(file => {
if(/scss$/.test(file)){
sass.render({
file: `${scssDir}${file}`,
importer: function(url, prev, done) {
if (url[0] === '~') {
url = path.resolve('node_modules', url.substr(1));
}
return { file: url };
},
includePaths: [ 'node_modules/', 'assets/' ]
}, (error, result) => {
if(!error){
fs.writeFile(`${scssDir}${file.split('.')[0]}.css`, result.css.toString())
}
})
}
})
})
}
export default config