package.json script里写的命令为什么不能单独提出来执行

发布于 2022-09-12 02:14:51 字数 298 浏览 12 评论 0

比如:

"scripts": {

"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",

},

npm run dev 可以直接运行。
但是 如果抽出来在shell运行
webpack-dev-server --inline --progress --config build/webpack.dev.conf.js
命令就不行?
不都是一样的道理吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心舞飞扬 2022-09-19 02:14:51

涉及到npm script的执行机制,执行前会设置一些环境变量,最重要的就是项目node_modules/.bin的绝对路径添加到环境变量 PATH 中,所以在npm script 中可以使用本地安装的工具。 从而解释了为什么如果抽出来在shell运行就不行

想抽出来执行也可以, 用npx命令,它在执行时,会到node_modules/.bin路径检查命令是否存在,对应的工具可以不用全局安装。官网示例

$ npm i -D webpack
$ npx webpack ...
看轻我的陪伴 2022-09-19 02:14:51

某种程度来说,是可以的;

比如你全局安装了webpack-dev-server;因为webpack-dev-server可认为是一个程序,系统会根据默认的搜索链,搜索支持这条命令的的入口,比如,在我的电脑上执行:

$ which webpack-dev-server
> /usr/local/bin/webpack-dev-server

可以看到,直接输入webpack-dev-server,实际就相当于一个快捷方式,实际运行的是/usr/local/bin/webpack-dev-server

当然,假如题主电脑无法运行,那只能证明这条命令没有全局安装(不同的电脑寻找的方式会有差异),而npm run会比在shell运行多一个“搜索”,那就是会多“搜索”当前目录的./node_modules的文件,所以题主可以试试./node_modules/webpack-dev-server --line ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文