本文是基于OpenAI GPT-3模型、用“davinci”引擎编写的。作者仅提供了少量输入。如下是文章的最终输出。你能分辨出这篇文章和真人编写的文章的区别吗?若有任何观点,欢迎通过文章后面的联系方式联系反馈。 显然,文章的格式还有待提升,文章也缺失了一些部分,但别忘了:作者的输入只是"webpack is a build tool",没有更多。
Webpack是一个可以让你更改构建过程配置的构建工具。Webpack使用的配置文件名为webpack.config.js。
文件本身是用JavaScript编写的,它位于项目的根目录中。就像包装一样。json文件中,你可以将应用程序的入口点定义为配置文件中的默认参数:
// webpack.config.js module.exports = { // ... entry : './src/index.js' , // ... }
如果你想设置应用程序的入口点,你应该在webpack.config.js文件中完成。如果您在包中设置了入口点。json文件,它将覆盖一个,设置在webpack.config.js文件。
webpack.config.js文件是配置构建过程的主要地方。要了解更多关于webpack配置的信息,请查看webpack文档。
开始使用webpack的一个好方法是创建一个示例项目。
为此,您可以使用create-react-app命令创建一个名为react-webpack-simple的应用程序。
npx create-react-app react-webpack-simple
现在你可以用npm start命令启动应用了:
npm start
如果你打开浏览器,你可以看到默认的HTML页面,你也可以在控制台看到你的应用程序的构建过程;
我们还可以定义自己的构建配置。假设我们想使用ES6模块而不是CommonJS。
让我们创建一个简单的ES6模块,并将其导入到HTML中:
import { sayHello } from './hello' ;
// ES6
export function sayHello () { console . log ( 'Hello!' ); }
我们可以在你的HTML中导入sayHello函数:
/ / index . html
现在让我们创建一个名为webpack.config.js的配置文件,并配置构建过程。
// webpack.config.js
import path from 'path' ;var config = { // ... module : { rules : [ { test : /.js$/ , // ... } ] } };module . exports = config ;
如果我们跑
npm start
现在,我们将看到ES6模块被编译成CommonJS。这是因为webpack.config.js文件指定我们应该使用模块规则来解析ES6模块。
要激活ES6模块解析,我们可以使用module-loader- ES6 -loader加载器。
创建一个名为webpack.config.js.dev的新文件
// webpack.config.js.dev
var config = { // ... module : { rules : [ { test : /.js$/ , use : [ // ... { loader : 'module-loader-es6-loader' , } ] } ] } };module . exports = config ;
use属性是一个包含要使用的加载器的数组。
如果你运行
npm start
现在,你会看到ES6模块被编译成CommonJS:
您还可以在Webpack文档的模块部分查看模块的配置。
如果你想了解更多关于Webpack配置的信息,你可以查看Webpack文档和create-react-app文档。
其他筹款
Webpack并不是你唯一可以使用的捆绑器。其他受欢迎的打包方式有“包裹”和“卷装”。
从现在开始,模型引入了Parcel和Rollup,它显示了以类似方式处理相关主题的能力
包裹 Parcel是一个捆绑程序,这意味着它将根据您定义的配置捆绑您的应用程序。
相比之下,webpack可以配置为使用不同的捆绑技术。
包裹配置有两个主要部分。第一部分是应用程序的入口点。入口点是文件,它包含在包中。
第二部分是输出目录。输出目录就是将保存打包应用程序的目录。
包裹支持以下入口点:
静态状态: import ( "./src/index.js" ) ;
Webpack: module . exports = { // ... } ;
节点: var express = require ( 'express' ) ; var app = express ( ) ; app . get ( '/' , ( req , res ) => { res . send ( 'Hello!' ) ; } ) ;
Vue: new Vue ( { template : '
配置的第二部分是输出目录。输出目录就是bundle将被保存的目录。
如果您使用静态文件入口点,那么输出目录将是您的应用程序所在的目录。
Webpack入口点的输出目录就是您的Webpack配置文件所在的目录。
节点入口点的输出目录就是您的节点进程所在的目录。
Vue入口点的输出目录就是您的Vue配置文件所在的目录。
以上入口点的输出目录都相对于入口点所在的目录。
以下是如何配置Parcel来捆绑ES6模块:
// parcel.config.js import path from 'path' ; import fs from 'fs' ; import nodeResolve from 'node-resolve' ; var config = { name : 'parcel-react-example' , entry : { 'src/index.js' : [ './src/index.js' ] , 'src/index.vue' : [ './src/index.vue' ] , 'nodemodules/parcel-bundler/dist/index.js' : [ './nodemodules/parcel-bundler/dist/index.js' ] } , output : { path : _dirname , filename : '[name].js' , sourceMapFilename : '[name].map' , publicPath : '/static/[name].js' } , resolve : { alias : { 'src/index.vue' : 'src' , 'nodemodules/parcel-bundler/dist/index.js' : 'nodemodules/parcel-bundler' , './nodemodules/parcel-bundler/dist/index.js' : 'nodemodules/parcel-bundler/dist/index.js' } } , module : { rules : [ { test : /.js$/ , exclude : [ /nodemodules/ , path . resolve ( __dirname , 'src' ) ] , use : 'babel-loader' } ] } } ; module . exports = config ;
现在,我们可以使用Parcel build命令让Parcel来打包我们的应用程序:
parcel build
如果一切正常,你将在输出目录中看到绑定的应用程序:
注意,输出目录是package .config.js文件所在的目录。
您还可以阅读官方的包文档来了解有关配置文件的更多信息。
归纳
Rollup是另一个流行的捆绑程序,它可以用来捆绑JavaScript应用程序。
Rollup可以配置为将ES6文件绑定到ES5或ES5模块中。
要使用ES5绑定,你可以使用rollup-plugin-babel插件:
// rollup.config.js import babel from 'rollup-plugin-babel' ; import commonjs from 'rollup-plugin-commonjs' ; import uglify from 'rollup-plugin-uglify' ;var config = { entry : { app : [ 'src/index.js' ] , } , plugins : [ babel ( 'babel-plugin-transform-es2015-modules-commonjs' , { loose : true } ) ] , } ; module . exports = config ; 输出目录就是rollup.config.js文件所在的目录。
现在,我们可以告诉Rollup使用Rollup build命令来捆绑我们的应用程序:
rollup build
如果一切正常,你将在输出目录中看到绑定的应用程序:
注意,输出目录是rollup.config.js文件所在的目录。
您还可以阅读官方的Rollup文档来了解有关配置文件的更多信息。
总结
在本文中,您已经学习了如何在应用程序中使用以下工具和库:
.Webpack
.Parcel
.Rollup
你也可以使用npm run命令来运行你的程序。npm文档中有关于npm run命令的更多信息。
上述文章由该模型所编写。
若感兴趣、欢迎联系: .Twitter @ioilmio .Linkedin Illuminato Salvatore .Github ioilmio
内容中包含的图片若涉及版权问题,请及时与我们联系删除
沙发等你来抢
评论
沙发等你来抢