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 凹角スタイルを実装するサンプル コード

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

推薦する

HTML の大なり、小なり、スペース、引用符などでよく使用されるエスケープ コードのリスト。

表は以下のとおりです。 HTMLソースコード結果を表示説明する&lt; <未満記号また...

ウェブサイトの高速化における CDN、SCDN、DCDN の違いは何ですか?どうやって選ぶ?

1. CDNこれは、Web サイト上で最もよく使用される加速機能です。分散サーバー レイアウトによ...

MySQL COUNT関数の使用と最適化

目次COUNT 関数は何をするのですか? MyISAMの「魔法」シンプルなCOUNT最適化近似値を使...

Centos7 FFmpeg オーディオ/ビデオ ツールのインストールに関する簡単なドキュメント

ffmpeg は非常に強力なオーディオおよびビデオ処理ツールです。公式 Web サイトは http:...

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

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

CentOS 7.2 に SuPHP をインストールするための詳細な手順

デフォルトでは、CentOS 7 上の PHP は apache または nobody として実行さ...

js データ型とその判定方法の例

js データ型基本データ型: 数値、文字列、ブール値、未定義、null、シンボル、参照データ型: オ...

子要素の margin-top によって親要素が移動する問題の解決方法

問題の説明今日、ページ スタイルを変更していたときに、子要素にmargin-top設定したのに、子要...

MySQL ストアド関数の詳細な紹介

目次1. ストアド関数を作成する2. ストアド関数の呼び出し3. 保存された関数を削除する4. スト...

MySQLにおけるトランザクションの永続性実装原理の詳細な説明

序文データベース トランザクションに関して言えば、トランザクションの ACID 特性、分離レベル、解...

LayUI+Shiroは動的なメニューを実装し、メニュー拡張の例を記憶します

目次1. Maven 依存関係2. メニュー関連クラス1. メインメニュー2. サブメニュー3. S...

MySQL がデュアルマスターで構成されている場合にデータループの競合を回避する方法

あなたはこの質問について考えたことがあるでしょうか?デュアルアクティブが構成されている場合、データル...

nestjs における例外フィルター Exceptionfilter の具体的な使用法

Nestjs 例外フィルターといえば、非常に強力な .Net のグローバル フィルターについて触れな...

Docker はすべてのコンテナをバッチ起動して閉じます

Dockerの場合すべてのコンテナコマンドを開始する docker を起動します $(docker ...

MySQL 整合性制約の例の詳細な説明

この記事では、MySQL の整合性制約について説明します。ご参考までに、詳細は以下の通りです。メイン...