项目中如何使用webpack-cli?
据我了解,只要我在 bash 终端上输入npm run start,webpack 就会开始运行 webpack 配置文件,在该文件中我已经编写了转换jsx
为js
使用 babel的规则(如果我错了,请纠正我)scss/less
。css
但是这一切在哪里webpack-cli
发挥作用呢?
项目中如何使用webpack-cli?
据我了解,只要我在 bash 终端上输入npm run start,webpack 就会开始运行 webpack 配置文件,在该文件中我已经编写了转换jsx
为js
使用 babel的规则(如果我错了,请纠正我)scss/less
。css
但是这一切在哪里webpack-cli
发挥作用呢?
该webpack-dev-server
包负责通过http
它为其创建的服务器提供构建服务。hot
如果您对源代码进行任何更改(使用重新加载选项时),它也会重新启动。
另一方面,webpack-cli
包负责源文件的构建和捆绑。所以,webpack-dev-server
必须运行webpack-cli
.
所以你必须安装这两个包。
你可以在这里看到它是如何做到的:
https://github.com/webpack/webpack-dev-server/blob/master/bin/webpack-dev-server.js
/** @type {CliOption} */
const cli = {
name: 'webpack-cli',
package: 'webpack-cli',
binName: 'webpack-cli',
installed: isInstalled('webpack-cli'),
url: 'https://github.com/webpack/webpack-cli',
preprocess() {
process.argv.splice(2, 0, 'serve');
},
};
// ...
const runCli = (cli) => {
if (cli.preprocess) {
cli.preprocess();
}
const path = require('path');
const pkgPath = require.resolve(`${cli.package}/package.json`);
// eslint-disable-next-line import/no-dynamic-require
const pkg = require(pkgPath);
// eslint-disable-next-line import/no-dynamic-require
require(path.resolve(path.dirname(pkgPath), pkg.bin[cli.binName]));
};
// ...
runCommand(packageManager, installOptions.concat(cli.package))
.then(() => {
runCli(cli);
})
.catch((error) => {
console.error(error);
process.exitCode = 1;
});
在v5 中,由于您使用(这是一个调用)来启动服务(将调用包),因此webpack
这种顺序有点颠倒了。webpack server
webpack-cli
webpack-dev-server
我webpack
无论如何都不是专家,但我认为这将帮助您更好地理解它。