webpack/uglifyjs的remove dead_code功能

昨天在项目里加上了mobx-react-devtools开发环境调试用。但是生产环境不希望有,于是加上了


import MobxDevTools from 'mobx-react-devtools'
...
render () {
return ...
{process.env.NODE_ENV !== 'production' && <MobxDevTools />

}
}

打包后发现代码体积明显增大,即使加了webpack生产环境打包的UglifyJsPlugin({

uglifyOptions: { compress: { dead_code: true } }

})

也去不掉。应该是因为import是静态引入的特点造成的。

最后自己想了个法子解决了一下,写一个空组件

export default null

在webpack的alias里判断生产环境,则添加alias[‘mobx-react-devtools’] = ‘./app/component/Null.jsx’

在生产环境中吧这个空组件替换进去,如果还有其他希望生产环境中排除的都可以如此解决。

发表在 ecmascript | 留下评论

learning typescript

这本书太老了,里面讲的还是tsd的工具。
实际用的时候发现tsd过时了。
里面推荐用typings,实际一用typings也过时了,
目前都是用的直接npm install @types/react这种命名空间第三方包定义的方法。
如果是编写库的话直接tsc打包就够,前端项目中的话用webpack的loader编译。
发表在 books, typescript | 留下评论

modern vim

vim进阶的又一本宝典,用了这么多年vim之后,仍然会感觉有很多东西需要掌握,有更多的插件等待挖掘

以下是一些读书笔记。

用用neovim,当前vim的很多有点都来自这个竞品的激励才实现的。
还有一些推荐的vim插件
fzf.vim
projectionist
Tim Pope’s Dispatch plugin.
vim-test
nvim的terminal模式,讲了很多
发表在 books, vim | 留下评论