이번에는 Vue 템플릿 파일 패키징 및 구성 단계에 대한 자세한 설명을 가져왔습니다. Vue 템플릿 파일 패키징 및 구성에 대한 주의사항은 무엇인가요? 실제 사례를 살펴보겠습니다.
1, github
github 주소: https://github.com/MengFangui/VueProjectTemplate
2. 웹팩 구성
(1) 기본 구성 webpack.base.config.js
const path = require('path'); //处理共用、通用的js const webpack = require('webpack'); //css单独打包 const ExtractTextPlugin = require('extract-text-webpack-plugin'); module.exports = { //入口文件 entry: { main: './src/main', vendors: './src/vendors' }, output: { path: path.join(dirname, './dist') }, module: { rules: [ //vue单文件处理 { test: /\.vue$/, use: [{ loader: 'vue-loader', options: { loaders: { less: ExtractTextPlugin.extract({ //minimize 启用压缩 use: ['css-loader?minimize', 'autoprefixer-loader', 'less-loader'], fallback: 'vue-style-loader' }), css: ExtractTextPlugin.extract({ use: ['css-loader', 'autoprefixer-loader', 'less-loader'], fallback: 'vue-style-loader' }) } } }] }, //iview文件夹下的js编译处理 { test: /iview\/.*?js$/, loader: 'babel-loader' }, //js编译处理 { test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ }, //css处理 { test: /\.css$/, use: ExtractTextPlugin.extract({ //minimize 启用压缩 use: ['css-loader?minimize', 'autoprefixer-loader'], fallback: 'style-loader' }) }, //less处理 { test: /\.less/, use: ExtractTextPlugin.extract({ use: ['css-loader?minimize', 'autoprefixer-loader', 'less-loader'], fallback: 'style-loader' }) }, //图片处理 { test: /\.(gif|jpg|png|woff|svg|eot|ttf)\??.*$/, loader: 'url-loader?limit=1024' }, //实现资源复用 { test: /\.(html|tpl)$/, loader: 'html-loader' } ] }, resolve: { //自动扩展文件后缀名,意味着我们require模块可以省略不写后缀名 extensions: ['.js', '.vue'], //模块别名定义,方便后续直接引用别名,无须多写长长的地址 alias: { 'vue': 'vue/dist/vue.esm.js' } } };
(2) 개발 환경 구성 webpack.dev.config.js
//处理共用、通用的js const webpack = require('webpack'); //处理html模板 const HtmlWebpackPlugin = require('html-webpack-plugin'); //css单独打包 const ExtractTextPlugin = require('extract-text-webpack-plugin'); //合并配置 const merge = require('webpack-merge'); const webpackBaseConfig = require('./webpack.base.config.js'); //fs模块用于对系统文件及目录进行读写操作 const fs = require('fs'); //编译前用node生成一个env.js的文件,用来标明当前是开发(development)还是生产环境(production) fs.open('./src/config/env.js', 'w', function(err, fd) { const buf = 'export default "development";'; fs.write(fd, buf, 0, buf.length, 0, function(err, written, buffer) {}); }); module.exports = merge(webpackBaseConfig, { //打包代码的同时生成一个sourcemap文件,并在打包文件的末尾添加//# souceURL,注释会告诉JS引擎原始文件位置 devtool: '#source-map', output: { //线上环境路径 publicPath: '/dist/', filename: '[name].js', chunkFilename: '[name].chunk.js' }, plugins: [ //css单独打包 new ExtractTextPlugin({ filename: '[name].css', allChunks: true }), //通用模块编译 new webpack.optimize.CommonsChunkPlugin({ //提取的公共块的块名称(chunk) name: 'vendors', //生成的通用的文件名 filename: 'vendors.js' }), new HtmlWebpackPlugin({ //输出文件 filename: '../index.html', //模板文件 template: './src/template/index.ejs', //不插入生成的 js 文件,只是单纯的生成一个 html 文件 inject: false }) ] });
(3) 온라인 환경 구성 webpack.prod.config.js
//处理共用、通用的js const webpack = require('webpack'); //处理html模板 const HtmlWebpackPlugin = require('html-webpack-plugin'); //css单独打包 const ExtractTextPlugin = require('extract-text-webpack-plugin'); //合并配置 const merge = require('webpack-merge'); const webpackBaseConfig = require('./webpack.base.config.js'); //fs模块用于对系统文件及目录进行读写操作 const fs = require('fs'); //编译前用node生成一个env.js的文件,用来标明当前是开发(development)还是生产环境(production) fs.open('./src/config/env.js', 'w', function (err, fd) { const buf = 'export default "production";'; fs.write(fd, buf, 0, buf.length, 0, function (err, written, buffer){}); }); module.exports = merge(webpackBaseConfig, { output: { //线上环境路径 publicPath: 'dist/', filename: '[name].[hash].js', chunkFilename: '[name].[hash].chunk.js' }, plugins: [ new ExtractTextPlugin({ //css单独打包 filename: '[name].[hash].css', allChunks: true }), //通用模块编译 new webpack.optimize.CommonsChunkPlugin({ //提取的公共块的块名称(chunk) name: 'vendors', //生成的通用的文件名 filename: 'vendors.[hash].js' }), new webpack.DefinePlugin({ 'process.env': { NODE_ENV: '"production"' } }), //js压缩 new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false } }), new HtmlWebpackPlugin({ //输出文件 filename: '../index_prod.html', //模板文件 template: './src/template/index.ejs', //不插入生成的 js 文件,只是单纯的生成一个 html 文件 inject: false }) ] });
(4) package.json 파일
{ "name": "iview-project", "version": "2.1.0", "description": "A base project with Vue.js2、Vue-Router、webpack2 and with iView2.", "main": "index.js", "scripts": { "init": "webpack --progress --config webpack.dev.config.js", "dev": "webpack-dev-server --content-base ./ --open --inline --hot --compress --history-api-fallback --config webpack.dev.config.js", "build": "webpack --progress --hide-modules --config webpack.prod.config.js" }, "repository": { "type": "git", "url": "git+https://github.com/iview/iview-project.git" }, "author": "Aresn", "license": "MIT", "dependencies": { "vue": "^2.2.6", "vue-router": "^2.2.1", "iview": "^2.0.0-rc.8" }, "devDependencies": { "autoprefixer-loader": "^2.0.0", "babel": "^6.23.0", "babel-core": "^6.23.1", "babel-loader": "^6.2.4", "babel-plugin-transform-runtime": "^6.12.0", "babel-preset-es2015": "^6.9.0", "babel-runtime": "^6.11.6", "css-loader": "^0.23.1", "extract-text-webpack-plugin": "^2.0.0", "file-loader": "^0.8.5", "html-loader": "^0.3.0", "html-webpack-plugin": "^2.28.0", "less": "^2.7.1", "less-loader": "^2.2.3", "style-loader": "^0.13.1", "url-loader": "^0.5.7", "vue-hot-reload-api": "^1.3.3", "vue-html-loader": "^1.2.3", "vue-loader": "^11.0.0", "vue-style-loader": "^1.0.0", "vue-template-compiler": "^2.2.1", "webpack": "^2.2.1", "webpack-dev-server": "^2.4.1", "webpack-merge": "^3.0.0" }, "bugs": { "url": "https://github.com/iview/iview-project/issues" }, "homepage": "https://www.iviewui.com" }
ps: webpack을 사용하여 vue 프로젝트를 패키징하는 방법을 살펴볼까요?
1. nodejs 설치: webpack을 패키징에 사용하려면 npm, npm(node package)이 필요합니다. Manager)는 node 플러그인 관리(설치, 제거, 종속성 관리 등 포함)에 사용되는 nodejs의 패키지 관리자이므로 먼저 nodejs를 다운로드하여 설치하고, 설치가 완료된 후 npm을 사용해야 합니다. -v 설치가 완료되었는지 확인합니다.
2. cnpm 설치(이 단계는 필요하지 않습니다.) : npm 설치 플러그인은 외국 사이트에서 다운로드 받기 때문에, cnpm이 완료되어 네트워크 영향으로 이상 현상이 발생하기 쉽습니다. npmjs.org 미러에서는 공식 버전(읽기 전용) 대신 이것을 사용할 수 있습니다. 동기화 빈도는 현재 공식 서비스와 최대한 동기화되도록 하기 위해 10분마다입니다. npm 설치 사용 -g cnpm --registry=https://registry.npm.taobao.org 설치, 나중에 npm 대신 cnpm을 사용할 수 있습니다
3. vue-cli 스캐폴딩을 전역적으로 설치합니다. npm install -g vue-cli(-g를 추가하지 않고 현재 디렉터리에 설치, -g를 사용하여 시스템의 노드 디렉터리에 설치). 설치가 완료된 후 vue -를 사용합니다. V
4. webpack 템플릿을 기반으로 새 프로젝트를 생성합니다(템플릿 다운로드). vue init webpack my-project(프로젝트 폴더 이름)를 사용하면 일련의 설정 후에 vue 템플릿이 다운로드됩니다. 5. cd my-project를 사용하여 프로젝트 폴더에 들어가십시오. npm install 명령을 사용하여 package.json 파일에 관련 구성 요소가 다운로드되어 node_modules 폴더에 저장됩니다. 프로젝트 디렉토리의
6. node_modules 종속성을 설치한 후 npm run dev
명령을 사용하여 프로젝트를 시작합니다(dev 구성은 package.json 파일에 있음). 이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!
추천 도서:
Vue 필터 사용에 대한 자세한 설명VSCode로 React Native 개발 환경을 구성하는 방법위 내용은 Vue 템플릿 파일 패키징 및 구성 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!