ホームページ ウェブフロントエンド jsチュートリアル js モジュール開発—Gruntfile.js の詳細な説明

js モジュール開発—Gruntfile.js の詳細な説明

Nov 28, 2019 pm 03:38 PM
モジュラー

js モジュール開発—Gruntfile.js の詳細な説明

1. grunt モジュールの概要

grunt プラグインは、npm 環境の自動化ツールです。圧縮、コンパイル、単体テスト、lint チェックなど、繰り返し行う必要があるタスクの場合、自動化ツールを使用すると労力が軽減され、作業が簡素化されます。 grunt モジュールは、Gruntfile.js ファイル内の設定に基づいてタスクを実行します。
次のコマンドが package.json で定義されている場合:

[関連コースの推奨事項: JavaScript ビデオ チュートリアル]

"scripts": {
    "build": "npm install && grunt"
}
ログイン後にコピー

Because runningnpm run build devDependency で定義された一部のモジュールが最初にインストールされ、その後、npm run build コマンドを実行することは、次の操作と同じです:

#● npm install grunt-cli -g

● npm install

# grunt

2. gruntfile.js の構造:

● "wrapper" 関数

● プロジェクトとタスクの構成

#Grunt プラグインとタスクのロード

##● カスタム タスク

##3.「ラッパー」関数

##Gruntfile の各コピー.js (および grunt プラグイン) は同じ形式に従います。作成する Grunt コードは、この関数内に配置する必要があります:

module.exports = function(grunt){
         //do grunt-related things in here
}
ログイン後にコピー

4. プロジェクトとタスクの構成

ほとんどすべての Grunt タスクは特定の構成データに依存しており、Grunt タスクのパラメーターは grunt.initConfig メソッドを通じて構成されます。 grunt.initConfig メソッドのパラメータは JSON オブジェクトであり、この設定オブジェクトには任意のデータを保存できます。さらに、これは JavaScript であるため、ここでは任意の有効な JS コードを使用できます。 <% %> テンプレート文字列を使用して、すでに設定されているプロパティを参照することもできます (例:

// 项目和任务配置
grunt.initConfig({
  pkg: grunt.file.readJSON('package.json'), //获取 package.json 中的元数据(js代码)
  proj:{
    name:'hello',
    description:'a hello demo'
  },
  hello: {
    options: {
      name: '<%= proj.name %>'  //用<% %>模板字符串匹配hello
    },
    srcs: ['1.txt', '2.txt']
  }
});
ログイン後にコピー
タスク モジュールの grunt.initConfig メソッドで設定されたプロパティは、grunt.config を使用できます)メソッドにアクセスするには、たとえば:

grunt.config("proj.name");
ログイン後にコピー

さらに、grunt タスク モジュールは、タスク名に基づいて構成オブジェクト内のタスク名に対応する属性を自動的に抽出します。たとえば、タスク hello を定義すると、 、次に、設定オブジェクトに対応する属性「hello」に、タスク実行機能に必要な設定とデータを設定します。

5. grunt プラグイン タスクのロード

作業の重複を減らすために、既存のプラグイン タスクをロードできます。

1. 独自のプライベート grunt プラグインをロードする

独自に定義したタスク スクリプトの一部を同じディレクトリに配置し、指定したディレクトリからロードできます。 grunt.loadTasks メソッド このディレクトリ内のすべての grunt タスク スクリプト。

2. npm で公開されている grunt プラグインをロードします

grunt-contrib-copy や grunt-contrib-uglify などの一般的なタスクは、grunt プラグインとして実装されています。 ins フォームは npm パブリック ライブラリで開発および公開されています。使用するプラグインが package.json ファイルの依存関係にリストされており、npm install を通じてインストールされている限り、タスクを直接読み込むことができます。

// 加载能够提供"copy"任务的插件。
grunt.loadNpmTasks('grunt-contrib-copy');
ログイン後にコピー

3.「grunt-」で始まるすべてのプラグインを直接ロードします。

npm には使用できるload-grunt-tasks プラグインがあります。 「grunt-」で始まる依存関係リストのプラグインをすべてロードします。 依存関係の「grunt-」で始まる使用する必要のあるプラグインをリストし、Gruntfile.js でそれらを呼び出します。

//Load grunt tasks from NPM packages
load-grunt-tasks
ログイン後にコピー

6. カスタム タスク

1. タスクの動作を直接定義します

grunt.registerTask('hello', 'Show some msg', function() {
  console.log(this.options().name); //输出hello
});
ログイン後にコピー

2。定義 タスク リスト

の場合、タスクは、順番に実行される一連のタスクの組み合わせとして定義できます。

grunt.registerTask('dothings', 'copy and Show some msg', ['copy','hello']);
ログイン後にコピー

3. デフォルト タスクを定義する

デフォルト タスクを定義することで、Grunt に 1 つ以上のタスクをデフォルトで実行させることができます。 grunt コマンドの実行時にタスクを指定しない場合は、デフォルトのタスクが実行されます。以下に定義されている場合、grunt の実行は grunt hello の実行と同じです。

grunt.registerTask('default', ['hello']);
ログイン後にコピー

4. 複合タスクの定義

registerMultiTask メソッドは複合タスクを定義できます。複合タスクは、オプションを除き、grunt.initConfig メソッドで設定された対応する属性を設定します。定義された属性は、target:data のペアとして順番に処理されます。

module.exports = function(grunt) {
    grunt.initConfig({
        Log: {
            options: {
                sep: ';'
            },
            srcs: ['1.txt', '2.txt'],
            dests: ['d1.txt', 'd2.txt']
        }
    });
    grunt.registerMultiTask("Log", function() {
        var options = this.options({ sep: '&' });
        console.log(this.target); 
        console.log(this.data.join(options.sep));
    });
};
ログイン後にコピー
grunt ログを実行すると、次の内容が出力されます:

Running "Log:srcs" (Log) task
srcs
1.txt;2.txt
Running "Log:dests" (Log) task
dests
d1.txt;d2.txt

定义任务行为Tips

1.任务内部可以执行其他的任务。

grunt.registerTask('mytask', function() {
  grunt.task.run('task1', 'task2');
  // Or:
  grunt.task.run(['task1', 'task2']);
});
ログイン後にコピー

2.定义异步任务

grunt.registerTask('mytask', function() {
  var done = this.async();
  //do something
  done();
});
ログイン後にコピー

3.当任务失败时,所有后续任务都将终止

在任务中,当执行失败,可以return false来表明当前任务执行失败,一般,多个任务按顺序执行,如果有任务失败时,所有后续任务都将终止。可以通过在命令行后加上--force来使有任务失败时,后续任务能继续进行。

4.任务中检查前置任务状态

有些任务可以依赖于其他任务的成功执行。通过grunt.task.requires方法来检查其前置任务是否已经执行,并且没有失败。

5.任务中检查配置属性

可以用方法grunt.task.requiresConfig指定一个或者多个字符串或者数组的配置属性为必需的。如果一个或多个必需的配置属性缺失,就通知系统当前任务失败。

本文来自 js教程 栏目,欢迎学习!  

以上がjs モジュール開発—Gruntfile.js の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java コードの保守性を最適化する方法: 経験とアドバイス Java コードの保守性を最適化する方法: 経験とアドバイス Nov 22, 2023 pm 05:18 PM

Java コードの保守性を最適化する方法: 経験とアドバイス ソフトウェア開発プロセスでは、保守性の高いコードを作成することが重要です。保守性とは、予期せぬ問題や追加の労力を引き起こすことなく、コードを簡単に理解、変更、拡張できることを意味します。 Java 開発者にとって、コードの保守性を最適化する方法は重要な問題です。この記事では、Java 開発者がコードの保守性を向上させるのに役立ついくつかの経験と提案を共有します。標準化された命名規則に従うと、コードが読みやすくなります。

Python コードのコード複雑さのエラーを解決するにはどうすればよいですか? Python コードのコード複雑さのエラーを解決するにはどうすればよいですか? Jun 24, 2023 pm 05:43 PM

Python はシンプルで習得が簡単で効率的なプログラミング言語ですが、Python コードを作成すると、コードが過度に複雑になるため問題が発生する場合があります。これらの問題が解決されない場合、コードの保守が困難になり、エラーが発生しやすくなり、コードの可読性とスケーラビリティが低下します。そこで、この記事では、Python コードのコード複雑さのエラーを解決する方法について説明します。コードの複雑さについて コードの複雑さは、理解と保守が難しいコードの性質を表す尺度です。 Pythonでは使用できるインジケーターがいくつかあります

Python コードの保守性が悪いエラーを解決するにはどうすればよいですか? Python コードの保守性が悪いエラーを解決するにはどうすればよいですか? Jun 25, 2023 am 11:58 AM

Python は高級プログラミング言語として、ソフトウェア開発で広く使用されています。 Python には多くの利点がありますが、多くの Python プログラマーがよく直面する問題は、コードの保守性が低いことです。 Python コードの保守性には、コードの読みやすさ、拡張性、再利用性が含まれます。この記事では、Python コードの保守性が低いという問題を解決する方法に焦点を当てます。 1. コードの可読性 コードの可読性とは、コードの可読性を指し、コードの保守性の核心となります。

Vue 大規模プロジェクトでモジュール開発を実装するためのガイド Vue 大規模プロジェクトでモジュール開発を実装するためのガイド Jun 09, 2023 pm 04:07 PM

現代の Web 開発では、Vue は柔軟で使いやすく強力なフロントエンド フレームワークとして、さまざまな Web サイトやアプリケーションの開発に広く使用されています。大規模なプロジェクトを開発する場合、コードの複雑さをどのように単純化し、プロジェクトの保守を容易にするかは、すべての開発者が直面しなければならない問題です。モジュール型開発は、コードをより適切に整理し、開発効率とコードの読みやすさを向上させるのに役立ちます。以下に、Vue 大規模プロジェクトでモジュール開発を実装するための経験とガイドラインをいくつか紹介します。 1. 大規模プロジェクトにおける明確な分業

Vue のモジュール性とは何ですか Vue のモジュール性とは何ですか Dec 23, 2022 pm 06:06 PM

Vue では、モジュール化とは、単一の関数をモジュール (ファイル) にカプセル化することです。モジュールは互いに分離されていますが、内部メンバーは特定のインターフェイスを通じて公開でき、他のモジュールに依存することもできます (コードの再利用を容易にするため)。開発効率が向上し、後のメンテナンスが容易になります)。モジュール開発の利点: 1. 明確な構成とメンテナンスの容易さ; 2. すべてのデータが一度に要求されず、ユーザー エクスペリエンスが良好である; 3. モジュールは相互に分離されているが、内部メンバーは特定のモジュールを通じて公開される可能性があるインターフェイス、または他のモジュールに依存します。

Python コードでのスケーラビリティの低下エラーを解決するにはどうすればよいですか? Python コードでのスケーラビリティの低下エラーを解決するにはどうすればよいですか? Jun 25, 2023 am 09:51 AM

Python は高級プログラミング言語として、データ分析、機械学習、Web 開発などの分野で広く使用されています。ただし、コードのサイズが拡大し続けるにつれて、Python プログラムのスケーラビリティの問題が徐々に明らかになります。スケーラビリティが低いというエラーは、Python プログラムが特定の状況下で要件の変化にうまく適応できず、大規模なデータを処理できないため、プログラムのパフォーマンスが低下することを意味します。依存関係が多すぎること、コード構造が貧弱であること、ドキュメントが不足していることなどはすべて、Python プログラムにおけるスケーラビリティの低下の原因となります。

Chaon、TGS-1000シリーズ産業用ミニホストを発売:スタッキングインターフェース拡張モジュールをサポートし、MTLプロセッサを搭載 Chaon、TGS-1000シリーズ産業用ミニホストを発売:スタッキングインターフェース拡張モジュールをサポートし、MTLプロセッサを搭載 Aug 14, 2024 pm 01:33 PM

8月14日のこのウェブサイトのニュースによると、Chaoen Vecowは第1世代Intel Core Ultraプロセッサを搭載したTGS-1000シリーズ産業用ミニホストを北京時間7月22日に発売した。このシリーズの製品の特徴は、追加の I/O ポートを拡張するための垂直スタッキングをサポートしていることです。 TGS-1000 シリーズは、TGS-1000 と TGS-1500 の 2 つのモデルに分かれています。違いは、TGS-1500 の下部に、Intel Ruixuan A370M または最大 RTX5000Ada モバイル バージョンをサポートするモジュールが含まれていることです。 NVIDIA プロフェッショナル カードの。 ▲TGS-1500TGS-1000 シリーズ ミニ ホストは、デュアル D を搭載した Intel Core Ultra7165H または Ultra5135H プロセッサーを搭載しています。

コードのモジュール化の練習に Go 言語を使用する方法 コードのモジュール化の練習に Go 言語を使用する方法 Aug 03, 2023 am 10:31 AM

コードのモジュール化実践のための Go 言語の使い方 はじめに: ソフトウェア開発において、コードのモジュール化は一般的な開発手法であり、コードを再利用可能なモジュールに分割することで、コードの保守性、テスト容易性、テスト容易性を向上させることができます。この記事では、Go 言語を使用してコードのモジュール化を実践する方法と、対応するコード例を紹介します。 1. モジュール化の利点により、コードの保守性が向上します。モジュール化により、コードが独立した機能モジュールに分割され、各モジュールが特定のタスクを担当するため、コードがより明確になり、変更が容易になります。コードは改善できる

See all articles