웹 프론트엔드 JS 튜토리얼 vue-cli에서 webpack2 프로젝트 패키징 최적화를 구현하는 방법

vue-cli에서 webpack2 프로젝트 패키징 최적화를 구현하는 방법

Jun 07, 2018 pm 02:15 PM
vue-cli 최적화

이제 참고할만한 가치가 있는 vue-cli webpack2 프로젝트 패키징 최적화에 대한 기사를 공유하겠습니다. 모든 분들께 도움이 되기를 바랍니다.

파일 검색 범위 줄이기

Resolve.modules 구성

Webpack의solve.modules는 모듈 라이브러리(예: node_modules)의 위치를 ​​구성합니다. import 'vue'가 js에 나타나면 이는 상대적인 것이 아닙니다. 또는 절대 경로를 작성하지 않으면 node_modules 디렉터리에서 찾을 수 있습니다. 그러나 기본 구성은 상향 재귀 검색을 통해 찾을 수 있지만 일반적으로 프로젝트 디렉터리에는 node_modules가 하나만 있고 프로젝트 루트 디렉터리에 있습니다. 검색 범위를 줄이기 위해 전체 경로를 직접 지정할 수 있습니다. 별칭의 경우에도 마찬가지로 node_modules(`별칭 구성에도 동일하게 적용됨):

function resolve (dir) {
 return path.join(__dirname, '..', dir)
}
module.exports = {
 resolve: {
 extensions: ['.js', '.vue', '.json'],
 modules: [
  resolve('src'),
  resolve('node_modules')
 ],
 alias: {
  'vue$': 'vue/dist/vue.common.js',
  'src': resolve('src'),
  'assets': resolve('src/assets'),
  'components': resolve('src/components'),
  // ...
  'store': resolve('src/store')
 }
 },
 ...
}
로그인 후 복사

테스트 설정 및 포함 및 제외를 적절하게

test: 충족해야 하는 조건(정규식, 따옴표 추가 안 함, 일치) 처리할 파일)

exclude: 조건을 충족할 수 없음(처리할 디렉터리 제외)

include: 가져온 파일이 로더에 의해 변환될 경로 또는 파일 배열(처리할 디렉터리 포함)

이것은 불필요한 순회를 줄여 성능 손실을 줄일 수 있습니다.

대체 코드 압축 도구

Webpack에서 기본적으로 제공하는 UglifyJS 플러그인은 단일 스레드 압축으로 인해 속도가 느립니다.

webpack-parallel-uglify-plugin 플러그인은 UglifyJS 플러그인을 병렬로 실행할 수 있습니다. , CPU 리소스를 보다 완전하고 합리적으로 사용하여 빌드 시간을 크게 줄일 수 있습니다.

물론 이 플러그인은 개발 환경이 아닌 프로덕션 환경에서 사용해야 합니다. 다음 구성:

// 删掉webpack提供的UglifyJS插件
// new webpack.optimize.UglifyJsPlugin({
// compress: {
//  warnings: false,
//  drop_console: true
// },
// sourceMap: true
// }),
// 增加 webpack-parallel-uglify-plugin来替换
const ParallelUglifyPlugin = require('webpack-parallel-uglify-plugin');
new ParallelUglifyPlugin({
 cacheDir: '.cache/', // 设置缓存路径,不改动的调用缓存,第二次及后面build时提速
 uglifyJS:{
 output: {
  comments: false
 },
 compress: {
  warnings: false
 }
 }
})
로그인 후 복사

또한 동일한 유형의 플러그인 webpack-uglify-parallel을 시도했지만 작동하지 않았습니다. webpack-parallel-uglify-plugin만큼 효과적이지는 않습니다(프로젝트마다 다를 수 있습니다. 프로젝트에서 비교를 위해 사용할 수 있습니다).

webpack-parallel-uglify-plugin 플러그인은 UglifyJsPlugin에서 생성된 패키지보다 약간 큽니다(그러나 명확하지는 않습니다). 크기가 커진 것에 비해 속도를 추구하기로 했습니다(사용 후 40초에서 40초로 줄었습니다). 19초) .

정적 파일 복사

copy-webpack-plugin 플러그인 사용: 지정된 폴더의 파일을 지정된 디렉토리에 복사합니다. 구성은 다음과 같습니다.

var CopyWebpackPlugin = require('copy-webpack-plugin')
plugins: [
 ...
 // copy custom static assets
 new CopyWebpackPlugin([
 {
  from: path.resolve(__dirname, '../static'),
  to: config.build.assetsSubDirectory,
  ignore: ['.*']
 }
 ])
]
DllPlugin & DllReferencePlugin
로그인 후 복사

Dll의 개념은 Windows 시스템의 dll. dll 패키지는 순수하게 종속된 라이브러리로 자체적으로 실행될 수 없으며 앱에서 이를 참조하는 데 사용됩니다.

dll을 패키징할 때 Webpack은 포함된 모든 라이브러리의 색인을 만들고 이를 매니페스트 파일에 작성합니다. dll(dll 사용자)을 참조하는 코드를 패키징하는 경우 이 매니페스트 파일만 읽어야 합니다.

1. 프로젝트 빌드 폴더 아래에 webpack.dll.conf.js 파일을 다음 내용으로 추가합니다.

var path = require('path')
var webpack = require('webpack')
module.exports = {
 entry: {
 vendor: [ // 这里填写需要的依赖库
  'babel-polyfill',
  'axios',
  'vue/dist/vue.common.js',
  'vue-router',
  'pingpp-js',
  "region-picker"
 ]
 },
 output: {
 path: path.resolve(__dirname, '../static/js'),
 filename: '[name].dll.js',
 library: '[name]_library'
 },
 module: {
 rules: [
  {
  test: /\.vue$/,
  loader: 'vue-loader'
  },
  {
  test: /\.js$/,
  loader: 'babel-loader',
  exclude: /node_modules/
  }
 ]
 },
 plugins: [
 new webpack.optimize.ModuleConcatenationPlugin(),
 new webpack.DllPlugin({
  path: path.join(__dirname, '.', '[name]-manifest.json'),
  libraryTarget: 'commonjs2',
  name: '[name]_library'
 }),
 new webpack.optimize.UglifyJsPlugin({
  compress: {
  warnings: false
  }
 })
 ]
}
로그인 후 복사

2. webpack.prod.conf.js 파일에 플러그인 부분을 추가합니다. :

plugins: [
 ...
 // copy custom static assets
  new webpack.DllReferencePlugin({
    context: path.resolve(__dirname, '..'),
    manifest: require('./vendor-manifest.json')
  })
]
로그인 후 복사

3. 프로젝트 루트 디렉터리 index.html 파일에 추가:

<body>
  <p id="app"></p>
  <!-- built files will be auto injected -->
  <script src="<%= webpackConfig.output.publicPath %>spa/js/vendor.dll.js"></script>   //添加这句,路径可根据所需修改
</body>
로그인 후 복사

4. package.json의 패키지 dll에 명령 추가

"build:dll": "webpack --config build/webpack.dll.conf.js"
로그인 후 복사

5. 명령 순서

npm run build:dll //打包一次之后依赖库无变动不需要执行
npm run build
로그인 후 복사

Advantages

Dll은 포함된 라이브러리가 증가, 감소 또는 업그레이드되지 않는 한 독립적으로 존재하므로 온라인 dll 코드는 필요하지 않습니다. 버전 릴리스로 자주 업데이트됩니다.

App 부분 코드를 수정한 후에는 포함된 라이브러리를 늘리거나 줄이거나 업그레이드하지 않는 이상 앱 부분 코드와 dll 부분만 컴파일하면 됩니다. 이는 또한 각 컴파일 속도를 크게 향상시킵니다.

동일한 종속 라이브러리를 사용하는 여러 프로젝트가 있고 DLL을 공유할 수 있다고 가정해 보세요.

19s->15s

babel의 캐시 디렉토리를 true로 설정

webpack.base.conf.js에서 babel-loader를 수정하세요.

loader: &#39;babel-loader?cacheDirectory=true&#39;,
로그인 후 복사

15s->14s

Set noParse

만약 당신이 모듈에 다른 새로운 종속성이 없는지 확인하려면 이를 구성하면 됩니다. Webpack은 더 이상 이 파일의 종속성을 검색하지 않습니다. 이렇게 하면 더 큰 클래스 라이브러리의 성능이 향상됩니다.

module: {
 noParse: /node_modules\/(element-ui\.js)/,
 rules: [
  {
   ...
  }
}
happypack
로그인 후 복사

위의 내용은 모든 사람을 위해 정리한 내용입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.

관련 기사:

Vue2.0에서 사용자 권한 제어 구현

vue.js를 통해 WeChat 결제 구현

vuex 구현 방법 설명(자세한 튜토리얼)

위 내용은 vue-cli에서 webpack2 프로젝트 패키징 최적화를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

심층 해석: Laravel이 달팽이처럼 느린 이유는 무엇입니까? 심층 해석: Laravel이 달팽이처럼 느린 이유는 무엇입니까? Mar 07, 2024 am 09:54 AM

Laravel은 널리 사용되는 PHP 개발 프레임워크이지만 달팽이처럼 느리다는 비판을 받기도 합니다. Laravel의 만족스럽지 못한 속도의 정확한 원인은 무엇입니까? 이 기사에서는 Laravel이 달팽이처럼 느린 이유를 여러 측면에서 심층적으로 설명하고 이를 특정 코드 예제와 결합하여 독자가 이 문제를 더 깊이 이해할 수 있도록 돕습니다. 1. ORM 쿼리 성능 문제 Laravel에서 ORM(Object Relational Mapping)은 매우 강력한 기능입니다.

새 Win11 컴퓨터를 받은 후 설정을 최적화하고 성능을 향상시키는 방법은 무엇입니까? 새 Win11 컴퓨터를 받은 후 설정을 최적화하고 성능을 향상시키는 방법은 무엇입니까? Mar 03, 2024 pm 09:01 PM

새 컴퓨터를 받은 후 성능을 어떻게 설정하고 최적화합니까? 사용자는 개인 정보 보호 및 보안을 직접 열고 일반(광고 ID, 로컬 콘텐츠, 응용 프로그램 실행, 권장 사항 설정, 생산 도구)을 클릭하거나 로컬 그룹 정책을 직접 열 수 있습니다. 새 Win11 컴퓨터를 받은 후 설정을 최적화하고 성능을 향상시키는 방법을 사용자에게 자세히 소개하겠습니다. 하나: 1. [Win+i] 키 조합을 눌러 설정을 연 다음 왼쪽의 [개인정보 및 보안]을 클릭하고 오른쪽의 Windows 권한 아래 일반(광고 ID, 로컬 콘텐츠, 앱 실행, 설정 제안, 생산성)을 클릭하세요. 방법 2.

Golang의 gc 최적화 전략에 대한 토론 Golang의 gc 최적화 전략에 대한 토론 Mar 06, 2024 pm 02:39 PM

Golang의 가비지 수집(GC)은 항상 개발자들 사이에서 뜨거운 주제였습니다. 빠른 프로그래밍 언어인 Golang에 내장된 가비지 컬렉터는 메모리를 매우 잘 관리할 수 있지만, 프로그램의 크기가 커질수록 일부 성능 문제가 발생하는 경우가 있습니다. 이 기사에서는 Golang의 GC 최적화 전략을 살펴보고 몇 가지 구체적인 코드 예제를 제공합니다. Golang의 가비지 수집 Golang의 가비지 수집기는 동시 마크 스윕(concurrentmark-s)을 기반으로 합니다.

C++ 프로그램 최적화: 시간 복잡도 감소 기술 C++ 프로그램 최적화: 시간 복잡도 감소 기술 Jun 01, 2024 am 11:19 AM

시간 복잡도는 입력 크기를 기준으로 알고리즘의 실행 시간을 측정합니다. C++ 프로그램의 시간 복잡성을 줄이는 팁에는 데이터 저장 및 관리를 최적화하기 위한 적절한 컨테이너(예: 벡터, 목록) 선택이 포함됩니다. Quick Sort와 같은 효율적인 알고리즘을 활용하여 계산 시간을 단축합니다. 여러 작업을 제거하여 이중 계산을 줄입니다. 불필요한 계산을 피하려면 조건부 분기를 사용하세요. 이진 검색과 같은 더 빠른 알고리즘을 사용하여 선형 검색을 최적화합니다.

VSCode 기능에 대한 자세한 설명: 작업 효율성을 높이는 데 어떻게 도움이 되나요? VSCode 기능에 대한 자세한 설명: 작업 효율성을 높이는 데 어떻게 도움이 되나요? Mar 25, 2024 pm 05:27 PM

VSCode 기능에 대한 자세한 설명: 작업 효율성을 높이는 데 어떻게 도움이 되나요? 소프트웨어 개발 산업이 지속적으로 발전함에 따라 개발자의 작업 효율성과 코드 품질 추구는 작업에서 중요한 목표가 되었습니다. 이 과정에서 코드 편집기의 선택은 중요한 결정이 됩니다. 많은 편집기 중에서 Visual Studio Code(줄여서 VSCode)는 강력한 기능과 유연한 확장성으로 대다수 개발자에게 사랑을 받고 있습니다. 이 기사에서는 VSCode의 일부 기능을 자세히 소개하고 논의합니다.

Laravel 성능 병목 현상 디코딩: 최적화 기술이 완전히 공개되었습니다! Laravel 성능 병목 현상 디코딩: 최적화 기술이 완전히 공개되었습니다! Mar 06, 2024 pm 02:33 PM

Laravel 성능 병목 현상 디코딩: 최적화 기술이 완전히 공개되었습니다! 인기 있는 PHP 프레임워크인 Laravel은 개발자에게 풍부한 기능과 편리한 개발 경험을 제공합니다. 그러나 프로젝트 규모가 커지고 방문 횟수가 늘어나면서 성능 병목 현상에 직면할 수도 있습니다. 이 기사에서는 개발자가 잠재적인 성능 문제를 발견하고 해결하는 데 도움이 되는 Laravel 성능 최적화 기술을 탐구합니다. 1. Eloquent 지연 로딩을 사용한 데이터베이스 쿼리 최적화 Eloquent를 사용하여 데이터베이스를 쿼리할 때 다음을 피하세요.

Laravel 성능 병목 현상 공개: 최적화 솔루션 공개! Laravel 성능 병목 현상 공개: 최적화 솔루션 공개! Mar 07, 2024 pm 01:30 PM

Laravel 성능 병목 현상 공개: 최적화 솔루션 공개! 인터넷 기술이 발전함에 따라 웹사이트와 애플리케이션의 성능 최적화가 점점 더 중요해지고 있습니다. 널리 사용되는 PHP 프레임워크인 Laravel은 개발 프로세스 중에 성능 병목 현상에 직면할 수 있습니다. 이 문서에서는 Laravel 애플리케이션이 직면할 수 있는 성능 문제를 살펴보고 개발자가 이러한 문제를 더 잘 해결할 수 있도록 몇 가지 최적화 솔루션과 특정 코드 예제를 제공합니다. 1. 데이터베이스 쿼리 최적화 데이터베이스 쿼리는 웹 애플리케이션의 일반적인 성능 병목 현상 중 하나입니다. 존재하다

WIN7 시스템의 시작 항목을 최적화하는 방법 WIN7 시스템의 시작 항목을 최적화하는 방법 Mar 26, 2024 pm 06:20 PM

1. 바탕화면에서 키조합(Win키 + R)을 눌러 실행창을 연 후, [regedit]를 입력하고 Enter를 눌러 확인하세요. 2. 레지스트리 편집기를 연 후 [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer]를 클릭하여 확장한 다음 디렉터리에 Serialize 항목이 있는지 확인합니다. 없으면 탐색기를 마우스 오른쪽 버튼으로 클릭하고 새 항목을 생성한 다음 이름을 Serialize로 지정합니다. 3. 그런 다음 직렬화를 클릭한 다음 오른쪽 창의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 새 DWORD(32) 비트 값을 만들고 이름을 Star로 지정합니다.

See all articles