-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
for weapp : 允许用户配置任意postcss插件,支持用户自定义postcss插件,新增babel-plugin-transform-image-to-url, 新增postcss-plugin-image-to-url #998
Conversation
…lugin-image-to-url 用于将css中的图片转换成 url, 字体
由于全部在master上修改,有点乱,汇总一下变更,对于小程序:
|
非常棒,不过对于 3、4 点,为什么要新增这两个插件呢,目前已经有这两个功能了 |
@luckyadam
所以我们在开发过程当中,本地会起一个express服务器,用于host静态资源。 发布之前,通过修改 src/server.js 简单本地静态资源服务 var express = require('express') // eslint-disable-line
var path = require('path') // eslint-disable-line
var compression = require('compression') // eslint-disable-line
var app = express()
app.use(compression())
app.use(express.static(path.join(process.cwd(), 'dist', 'static'), {
maxAge: '3d'
}))
const PORT = 9000
let consoleLogger = console
app.listen(PORT, function(err) {
if (err) {
throw err
}
consoleLogger.log(`Listening at http://localhost:${PORT}/`) // eslint-disable-line
})
另外postcss-plugin-image-to-url,还具备字体文件转base64功能,小程序中外部字体文件是有问题的,必须本地base64化。 /config/index.js 目前这两个插件是通过本地路径的方式引入的 const config = {
projectName: 'taro-app',
date: '2018-11-1',
sourceRoot: 'src',
outputRoot: 'dist/app',
plugins: {
babel: {
sourceMap: true,
presets: [
'env'
],
plugins: [
'transform-class-properties',
'transform-decorators-legacy',
'transform-object-rest-spread',
[
'./tools/babel-plugin-transform-image-to-url', {
publicPath: 'http://127.0.0.1:9000/',
staticDirectory: 'dist/static'
}]
]
},
uglify: {
enable: false,
config: { }
}
},
defineConstants: {
__DEV__ : true, // 是否为开发环境
__SIT__ : false, // 是否为sit环境
__UAT__ : false, // 是否为uat环境
__PROD__ : false, // 是否为prod环境
__WEAPP__ : false, // 是否为微信小程序环境
__SWAN__ : true, // 是否为百度小程序环境
__H5__: false // 是否为h5环境
},
copy: {
patterns: [],
options: {}
},
weapp: {
module: {
postcss: {
autoprefixer: {
browsers: [
'last 3 versions',
'Android >= 4.1',
'ios >= 8'
]
},
'postcss-pxtransform': {
designWidth: 375,
platform: 'weapp',
deviceRatio: {'640': 1.17, '375': 0.5, '828': 0.905}
},
'./tools/postcss-plugin-image-to-url': {
publicPath: 'http://127.0.0.1:9000/',
staticDirectory: 'dist/static'
}
}
}
},
h5: {
publicPath: '/',
staticDirectory: 'static',
module: {
postcss: {
autoprefixer: {
browsers: [
'last 3 versions',
'Android >= 4.1',
'ios >= 8'
]
}
}
}
}
}
module.exports = function (merge) {
if (process.env.NODE_ENV === 'development') {
return merge({}, config, require('./dev'))
}
return merge({}, config, require('./prod'))
} |
…emplates中config配置
@luckyadam , |
@wujjpp 收到~ |
@luckyadam defineConstants: {
__DEV__: true, // 是否为开发环境
__SIT__: false, // 是否为sit环境
__UAT__: false, // 是否为uat环境
__PROD__: false, // 是否为prod环境
__WEAPP__: false, // 是否为微信小程序环境
__SWAN__: true, // 是否为百度小程序环境
__H5__: false // 是否为h5环境
}, 举个例子:通过下面的方式来选择性require
最后使用uglify处理下面代码 // 该代码将会被uglify保留
if (true) {
config = require('开发环境业务配置文件')
}
// 该代码将会被uglify移除
if (false) {
config = require('集成测试环境业务配置文件')
}
// 该代码将会被uglify移除
if (false) {
config = require('用户接受测试环境业务配置文件')
}
// 该代码将会被uglify移除
if (false) {
config = require('生产环境环境业务配置文件')
} 在Taro执行完build:weapp之后,虽然移除了不满足条件编译的代码,但是在dist目录里面还是会生成所有环境配置文件,要是可以在 |
@wujjpp 确实,环境配置文件还在,这个我看下能否优化 |
e8eba15
to
1c14f86
Compare
@wujjpp 为什么不是本地开发时全部图片转 base64,发布时候把一部分图片转 base64,另外一部分转 url 呢? 如果是本地起静态服务器,还有端口冲突的风险。 |
修改processStyleWithPostCSS, 允许用户配置任意postcss插件
修改模板项目创建模板 config -> index.js