Vueフロントエンドパッケージングの詳細なプロセス

Vueフロントエンドパッケージングの詳細なプロセス

1. パッケージ化コマンドを追加する

package.jsonに設定を追加する
npm run buildによってオンラインで公開されたコードはデバッグが容易ではない

注文:

  • ①npm run build:dev 開発・デバッグ環境
  • ②npm run build:prod オンラインデバッグ環境

 "build:dev": "vue-cli-service ビルド --mode dev",
    "build:prod": "vue-cli-service ビルド --mode prod"

2. パッケージ化されたコードを実行する

dist/index.html
直接ダブルクリックしないでください。 dist/index.html
httpコンテナで実行する必要があります: serve tomcat nginx iis
今回はserveを使う

サーブをダウンロード: npm i -g serve

エラー:

エラー: EPERM: 操作は許可されていません。mkdir 'C:\Program Files\nodejs\node global\node_modules.staging'

解決策:ユーザー -> 個人ユーザー -> .npmrcファイルを削除

パッケージ化されたディレクトリを起動します: serve dist

3. パッケージ化して異なる環境変数を指定する

環境変数を追加します:

  • ①開発:ルートディレクトリに.env.devファイルを作成する(package.jsonのモードに対応)
  • ② オンライン: ルートディレクトリに.env.prodファイルを作成する(package.jsonのモードに対応)

変数を動的に指定する必要がある場合は、 process.env.NODE_ENVなどを使用します。

// .env.dev
##開発環境 NODE_ENV=development
## 変数は VUE_APP_ で始まります。VUE_APP_URL=http://www.dev.com

// .env.prod
##本番環境 NODE_ENV=production
VUE_APP_URL=http://www.prod.com

4. カスタムファイルをパッケージ化する

  • vuecliwebpack
    をベースにしているwebpack
  • VueCli ゼロ構成
  • 設定は不要ですvue.config.jsを指定できます。

npm run build:prodにはコメント、空白行、圧縮などが欠けています。

4.1 サードパーティのパッケージを削除する

コードの内訳:

  • ① サードパーティパッケージ: vue elementui axiosなど
  • ②開発コード:自分で書いたもの

サードパーティのパッケージを削除する:サードパーティが提供するcdn (無料または有料) を使用する
ステップ:

  • ①サードパーティパッケージのcdnリソースを見つけてpublic/index.html
    に追加します。 public/index.html
  • ② 前回のimportを削除する
  • vue.config.jsでサードパーティパッケージの除外を設定する
モジュール.エクスポート = {
  // ファイルアクセスの相対パスを開きます プロジェクトのルートディレクトリを介した独立したプロジェクトアクセス publicPath: './',
  // 開発時には、オンラインでマップする必要はありません --> コードのデバッグを容易にするためにコードマッピングを提供します。productionSourceMap: process.env.NODE_ENV == 'development' ? true: false,
  // webpack を設定する
  Webpack の設定: config => {
    // config---vuecli デフォルト構成Object.assign(config, {
      // 依存パッケージを除外する externals: {
        vue: 'ビュー'
      }
    })
  },
}

4.2 gzip圧縮

下載npm i -D compression-webpack-plugin

5. 梱包エラー:

エラー TypeError: 未定義のプロパティ 'tapPromise' を読み取ることができません
TypeError: 未定義のプロパティ 'tapPromise' を読み取ることができません

エラーの原因:スキャフォールディング構成 gzip パッケージはこのバージョンをサポートしていません
解決策: npm install [email protected] --save-dev を使用します。
vue.config.jsで設定する

パッケージ化により、gz で終わるファイルが生成されます。

CompressionWebpackPlugin = require('compression-webpack-plugin') を設定します。

Webpack の設定: config => {
    プラグイン = [
      新しい圧縮Webpackプラグイン({
        // 圧縮アルゴリズム: 'gzip',
        // 圧縮ファイルの一致テスト: /\.js$|\.css$/,
        // 圧縮しきい値が 10k より大きい場合: 10240 
      })
    ]
    process.env.NODE_ENV == 'production'の場合{
      config.mode = "プロダクション"
      config.plugins = [...config.plugins, ...plugins]
    } それ以外 {
      config.mode = '開発'
    }
  },

ブラウザビュー:

  • リクエストヘッダー: Accept-Encoding: gzip, deflate, br
  • レスポンスヘッダー: Content-Encoding: gzip

パッケージ展開モード:

ハッシュ: パッケージ化後、distはhttpコンテナ内で直接実行されます。これはオンラインと一貫性があります。

履歴:パッケージ化後、スキャフォールディングの更新では404は発生しませんが、オンラインでは404が発生します。
解決策:フロントエンドのコードはバックエンドと一緒にデプロイする必要があり、バックエンドはフロントエンドへのジャンプを担当します。

Vue フロントエンドのパッケージ化の詳細なプロセスに関するこの記事はこれで終わりです。Vue フロントエンドのパッケージ化の詳細なプロセスに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Hbuilderを使用してvueプロジェクトをAPPにパッケージ化するプロセスと、遭遇した落とし穴について簡単に説明します。
  • Electron + Vueでデスクトップをパッケージ化する操作手順の詳細説明
  • Vueプロジェクトをパッケージ化し、BaiduのBAEを通じてオンラインで公開するプロセスの詳細な説明

<<:  CSS で div 凹角スタイルを実装するサンプル コード

>>:  ラベルタグの使用時に発生する問題の分析と解決策

推薦する

mysql8.0 Windows x64 zip パッケージのインストールと構成のチュートリアル

MySQL 8 Windows版 zipインストール手順(ダウンロードアドレス) 1. ZIPファイ...

Ubuntu で時刻同期に NTP を使用する

NTP は、ネットワーク上で時間を同期するための TCP/IP プロトコルです。通常、クライアントは...

HTMLポップアップdivはモバイルの中央揃えを実現するのに非常に便利です

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

nginx で同時接続リクエストの数を制限する方法

導入同時接続数を制限するモジュールは http_limit_conn_module です。アドレス:...

Vue プロジェクトに Electron を追加するための詳細なコード

1. package.jsonに追加する "メイン": "electr...

MySQL マスター スレーブ データが矛盾しています。プロンプト: Slave_SQL_Running: 解決策はありません

この記事では、MySQL マスターとスレーブ データ間の不一致の解決方法と、プロンプト「Slave_...

Ubuntu 18.04 システムでの Redis および phpredis 拡張機能のインストールと設定の詳細な説明

この記事では、Ubuntu 18.04 に Redis と phpredis 拡張機能をインストール...

JavaScriptはシンプルな日付効果を実装します

JavaScriptの日付エフェクトの具体的なコードは参考用です。具体的な内容は次のとおりです。コー...

設定ファイルを変更した後、操作を再開します

余計なことは言わないで、コードだけ見てみましょう〜 # docker-compose をダウン # ...

リモートDockerを使用した統合テスト環境の構築手順

需要背景チームには統合テストが必要であり、そのためには、mysql や rabbitmq などのミド...

Nodeイベントループの包括的な理解

目次ノードイベントループイベントループ図メインスレッドイベントループタイマーキューの仕組み投票キュー...

垂直方向の中央揃えをエレガントに実現する方法を教えます(推奨)

序文CSS で水平方向と垂直方向に中央揃えする方法はたくさんあります。この記事で紹介する方法は非常に...

ウェブサイトに最も必要なのは、ターゲットユーザーグループのエクスペリエンスを向上させることです。

「大河は東に流れ、波は歴代の英雄たちを洗い流した。古城の西側は三国時代の周朗の赤壁だと言われている...

HTMLの行間設定方法と問題点

<p></p> の行間隔を設定するには、style="line-h...

MySQL がデフォルト値を持つ NULL 列の使用を推奨しない理由

よく聞かれる答えは、列に NULL 値を使用するとインデックスが無効になるというものですが、実際にテ...