【问题标题】:npm scripts not working after reinstalling packages listed in devDependecies重新安装 devDependecies 中列出的软件包后,npm 脚本不起作用
【发布时间】:2017-03-10 00:05:06
【问题描述】:

我一直在使用 npm 脚本为前端开发人员开发构建系统,并且在 package.jsonscripts 部分中定义了几个任务。其中包括典型任务,例如:缩小 css、代码 linting、生成文档、转译 JavaScript……等等。

定义的所有脚本任务通过 CLI 执行命令来达到预期的结果,例如$ npm run build$ npm run docs$ npm run watch...

为了测试在全新安装所需的节点包后可以成功复制构建系统,我这样做:

  1. 复制项目目录。
  2. 从复制的项目目录中删除node_modules 文件夹。
  3. 通过$ npm install在重复的项目目录中执行全新安装。

正如预期的那样,这会根据package.jsondevDependencies 部分中列出的那些下载所需的节点包。

但是,在运行新的npm install 之后,一些定义的脚本任务(例如:$ npm run watch)不再能从受骗项目中成功运行。

进一步调查显示,没有。重复项目目录的“node_modules”文件夹中列出的顶级包(即全新安装后的那个)比任务成功运行的原始项目目录少了大约 30 个。缺少的所有软件包似乎都是我安装的软件包所依赖的子依赖项。

此外,当通过 CLI 运行 $ npm list 时,在原始项目目录和复制的项目目录(即全新安装的目录)中列出的包不同。

所以,我现在处于无法共享项目目录的位置,除非包含 node_modules 文件夹(及其内容)。理想情况下,我想与其他开发人员共享样板代码,他们只需将 cd 到项目目录并自己运行 $ npm install

对于如何解决此问题的任何建议,我将不胜感激。这不是我以前遇到过的。

提前致谢。

【问题讨论】:

    标签: npm npm-install package.json npm-scripts


    【解决方案1】:

    我的猜测是您在package.json 中松散地指定了您的版本范围(使用^~*)。您的原始目录包含过时的版本。当您在新目录中运行 npm install 时,会安装更高版本(且不兼容)(具有不同的依赖项)。

    要验证,请转到您的原始目录并运行npm outdated。这将为您提供所有过时依赖项的列表,以及安装的当前版本、package.json 中您的版本范围允许的最新版本以及软件包的最新版本号。像这样:

    $ npm outdated
    Package                        Current  Wanted  Latest  Location
    eslint                          1.10.3  1.10.3   3.9.1  postcss-import
    eslint-config-i-am-meticulous    2.0.0   2.0.0   5.0.2  postcss-import
    pkg-resolve                     0.1.14  0.1.14   0.2.2  postcss-import
    postcss-scss                     0.1.9   0.1.9   0.4.0  postcss-import
    

    如果任何CurrentWanted 版本号不同,则在新目录中重新安装将导致安装不同的版本

    大多数 npm 包使用SemVer。除非您在package.json 中使用* 作为版本号,否则您应该可以避免大部分的破坏性更改。但是,包作者是人,有时他们会弄乱 semver。还有一些不遵循 semver 的 npm 包。这些包要么不应该被使用,要么它们的版本号应该被固定。

    如果您发布package.jsondevDependencies 部分可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-02-12
      • 2019-11-24
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 2014-06-23
      • 2021-11-15
      相关资源
      最近更新 更多