ano*_*ous 37 babel webpack babel-polyfill babel-core babel-loader
我建立的WebPack我的阵营项目之间糊涂了babel,babel-core,babel-loader,babel-preset-2015和babel-preset-react.我知道Babel需要将ES7或ES6代码转换为ES5,但在我的package.json安装中我已经安装了所有这些依赖项,除了Babel,它们也是如此devDependencies.
有人可以解释一下这些之间的差异以及为什么我的项目需要所有这些之间的区别?是不是有任何单一的依赖来替换它们?如果他们如此重要,为什么他们被包括在内 devDependencies?
Jay*_*vel 62
巴别塔
Babel doesn't do anything,It basically acts like const babel = code => code;
by parsing the code and then generating the same code back out again.
You will need to add some plugins for Babel to do anything like transpiling es6,JSX.
Run Code Online (Sandbox Code Playgroud)
巴贝尔核心
if you want to use babel in your real project, you need to install babel but
there's no babel package available.
babel split it up into two separate packages: babel-cli and babel-core
**babel-cli** : which can be used to compile files from the command line.
**babel-core** : if you want to use the Node API you can install babel-
core, Same as "babel-cli" except you would use it programmatically inside your app.
use "babel-cli" or "babel-core" to compile your files before production.
Run Code Online (Sandbox Code Playgroud)
继续前进
预设vs插件:
We can add features(es6,JSX) one at a time with babel plugins(es2015),
or
we can use babel presets to include all the features(es6) of a particular year.
Presets make setup easier.
Run Code Online (Sandbox Code Playgroud)
巴别预置-ES2015
babel-preset-env supports es2015 features and replaces es2015, es2016,
es2017 and latest.
So use babel-preset-env, it behaves exactly the same as babel-preset-latest
(or babel-preset-es2015, babel-preset-es2016, and babel-preset-es2017 together).
Run Code Online (Sandbox Code Playgroud)
巴别预置反应的
transform JSX into createElement calls like transforming react pure class to
function and transform react remove prop-types.
Run Code Online (Sandbox Code Playgroud)
巴别塔,填充工具
Without babel-polyfill, babel only allows you to use features like arrow
functions, destructuring, default arguments, and other syntax-specific
features introduced in ES6.
The new ES6 built-ins like Set, Map and Promise must be polyfilled
To include the polyfill you need to require it at the top of the entry point
to your application.
Run Code Online (Sandbox Code Playgroud)
巴贝尔装载机
you done with babel-core, babel-cli, and why need preset, plugins and now
you are compiling ES6 to ES5 on a file-by-file basis by babel-cli every time.
to get rid-off this, you need to bundle the task/js file. For that you need
Webpack.
Loaders are kind of like “tasks”, They gives the ability to leverage
webpack's bundling capabilities for all kinds of files by converting them
to valid modules that webpack can process.
Webpack has great Babel support through babel-loader
Run Code Online (Sandbox Code Playgroud)
devDependencies
When you deploy your app, modules in dependencies need to be installed or
your app won't work. Modules in devDependencies don't need to be installed
on the production server since you're not developing on that machine.
These packages are only needed for development and testing.
Run Code Online (Sandbox Code Playgroud)
是不是有任何单一的依赖来替换它们?
as you read the above states, You need some presets and loaders to transpile
es2015 or JSX files.
Run Code Online (Sandbox Code Playgroud)
babel - > @babel
Since Babel 7 the Babel team switched to scoped packages, so you now
have to use @babel/core instead of babel-core.
Your dependencies will need to be modified like so:
babel-cli -> @babel/cli. Ex: babel- with @babel/.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5616 次 |
| 最近记录: |