一、grunt模块简介
grunt插件,是一种npm环境下的自动化工具。对于需要反复重复的任务,例如压缩、编译、单元测试、linting等,自动化工具可以减轻你的劳动,简化你的工作。grunt模块根据Gruntfile.js文件中的配置进行任务。
如果在package.json中定义如下命令:
【相关课程推荐:JavaScript视频教程】
"scripts": { "build": "npm install && grunt" }
因为运行npm run build会先安装devDependencies中定义的一些模块,则运行npm run build这个命令相当于做如下操作:
● npm install grunt-cli -g
● npm install
● grunt
二、gruntfile.js的结构:
● "wrapper" 函数
● 项目和任务配置
● 加载 grunt 插件和任务
● 自定义任务
三、"wrapper" 函数
每一份 Gruntfile.js(和grunt插件)都遵循同样的格式,你所书写的Grunt代码必须放在此函数内:
module.exports = function(grunt){ //do grunt-related things in here }
四、项目和任务配置
大部分的Grunt任务都依赖某些配置数据,我们通过grunt.initConfig 方法来配置Grunt任务的参数。
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"中配置任务执行函数中所需用到的配置和数据。
五、加载grunt插件任务
为了减少重复劳动,我们可以加载已有的插件任务。
1.加载自己私有的grunt插件
可将自己定义的一些task脚本放在同一个目录下,通过grunt.loadTasks方法从指定目录加载该目录下所有的grunt任务脚本。
2.加载在npm中发布的grunt插件
像 grunt-contrib-copy和grunt-contrib-uglify这些常用的任务都已经以grunt插件的形式被开发出来了,且被发布在npm公开库中,只要在 package.json 文件中将需要使用的插件列在dependency中,并通过npm install安装之后,就可以直接加载该任务。
// 加载能够提供"copy"任务的插件。 grunt.loadNpmTasks('grunt-contrib-copy');
3.直接加载所有以"grunt-"打头的插件
npm上有个load-grunt-tasks插件可以用来加载dependency列表中所有以"grunt-"打头的插件。
将需要使用的"grunt-"打头的插件列在dependency中,然后在Gruntfile.js中进行调用。
//Load grunt tasks from NPM packages load-grunt-tasks
六、自定义任务
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.定义默认任务
通过定义 default 任务,可以让Grunt默认执行一个或多个任务。执行 grunt 命令时如果不指定一个任务的话,将会执行默认任务。如进行下面定义的话执行grunt 相当于执行grunt hello。
grunt.registerTask('default', ['hello']);
4.定义复合任务
registerMultiTask方法可以定义一个复合任务,复合任务将会对grunt.initConfig 方法中配置的相应属性中除了options外定义的属性依次作为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 Log将会输出:
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教程 栏目,欢迎学习!
Atas ialah kandungan terperinci js模块化开发—Gruntfile.js详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Dreamweaver Mac版
Alat pembangunan web visual

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular