vue 开发常用工具及配置三
本文大约 3000 字。
1,选择构建工具
1.1 Gulp
1.2 Webpack
1.3 选择 Gulp 还是 Webpack?
2,在 vue.config.js 中配置文件压缩选项
3,使用环境变量
4,使用别名
5,使用全局 less 变量
源码
参考链接
gulp.task('sass',function(){
gulp.src('src/styles/*.scss')
.pipe(sass().on('error',sass.logError))
.pipe(gulp.dest('./build/prd/styles/'));//编译后的输出路径
});
entry: {
app:__dirname + "/src/scripts/app.js",
}
Gulp 倾向于管理前端开发整个过程,而 Webpack 专注的只是整个开发流程中的一环。一个多,一个少,貌似应该选择 Gulp,其实不然。管的多,束缚也多。整个开发流程与公司、团队、项目都是有密切关系的,每个公司的需求都不太一样。最好是使用束缚少的工具框架。
Gulp 对 js 文件的模块化工作是通过Webpack实现的,具体是通过安装 gulp-webpack 及相关 loader 模块进行js模块化管理的。这不奇怪,因为Gulp本身就不是要与 Webpack 竞争模块打包,Gulp志在流程线化管理。
Gulp可以对 css、js 文件进行合并与压缩,而 Webpack可以实现对css、js、html、图片文件等进行合并与压缩,还可以对js文件进行编译,如es6->es5等。后者功能更全面,更强大一些。
处理js、css压缩,Webpack已经内置了功能,Gulp需要第三方插件。
Webpack一直在用,文档教程等资源积累较多。
plugins: [
new webpack.optimize.UglifyJsPlugin({ //压缩代码
compress: {
warnings: false
},
except: ['$super', '$', 'exports', 'require'] //排除关键字
})
]
Error: webpack.optimize.UglifyJsPlugin has been removed, please use config.optimization.minimize instead
yarn add uglifyjs-webpack-plugin
const IS_PRD = ['production', 'prod'].includes(process.env.NODE_ENV);
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
module.exports = {
"transpileDependencies": [
"vuetify"
],
configureWebpack: config => {
if (IS_PRD) {
const plugins = []
plugins.push(
new UglifyJsPlugin({
uglifyOptions: {
compress: {
warnings: true,
drop_console: true,
drop_debugger: true,
pure_funcs: ['console.log'] //移除console
},
except: ['$super', '$', 'exports', 'require'], //排除关键字
mangle: false,
output: {
beautify: true,//压缩注释
}
},
sourceMap: false,
parallel: true,
})
)
config.plugins = [...config.plugins, ...plugins]
}
},
...
代码较长,具体可下载源码查看。
.env # 在所有的环境中被载入
.env.local # 在所有的环境中被载入,但会被 git 忽略
.env.[mode] # 只在指定的模式中被载入
.env.[mode].local # 只在指定的模式中被载入,但会被 git 忽略
development 模式用于 vue-cli-service serve
production 模式用于 vue-cli-service build 和 vue-cli-service test:e2e
test 模式用于 vue-cli-service test:unit
VUE_APP_TITLE=My App
NODE_ENV=production
VUE_APP_TITLE=My App (staging)
console.log('process.env.VUE_APP_API_BASE',process.env.VUE_APP_API_BASE)
process.env.VUE_APP_API_BASE http://0.0.0.0:8081
import HelloWorld from '@/components/HelloWorld';
// 添加别名
config.resolve.alias.set('@', resolve('src'))
vue add style-resources-loaderyarn
add vue-cli-plugin-style-resources-loader
@theme-color: #3385ff;
pluginOptions: {
'style-resources-loader': {
preProcessor: 'less',
patterns: [
path.resolve(__dirname, './src/assets/styles/variable.less'),
]
}
}
工具要升级到 vue-cli3.x 以上。还有,这里配置的变量文件路径不能使用别名,一定要用相对路径。
<!-- 使用带有全局变量的样式 -->
<button class="button">button</button>
...
<style lang="less" scoped>
button{
color: @theme-color;
}
</style>
源码
参考链接
https://www.jianshu.com/p/b1022d224817
Gulp和Webpack对比
https://www.cnblogs.com/huoan/p/10354341.html
vue-cli3 vue.config.js配置
https://blog.csdn.net/u014440483/article/details/87267160
vue-cli3搭建项目之webpack配置
https://cli.vuejs.org/zh/guide/css.html#自动化导入
[专栏]基于 vue+go 如何快速进行业务迭代?
关于作者