重新安装DevDependences中列出的程序包后,npm脚本不起作用

重新安装DevDependences中列出的程序包后,npm脚本不起作用,npm,npm-install,package.json,npm-scripts,Npm,Npm Install,Package.json,Npm Scripts,我一直在使用npm脚本为前端开发人员开发一个构建系统,在package.json的scripts部分定义了几个任务。这些包括典型的任务,例如:缩小css、代码过滤、生成文档、传输JavaScript……等等 定义的所有脚本任务都通过CLI执行命令来实现预期结果,例如$npm run build,$npm run docs,$npm run watch 为了测试在重新安装所需的节点包后构建系统是否可以成功复制,我执行以下操作: 制作项目目录的副本 从复制的项目目录中删除节点\u模块文件夹 通过$n

我一直在使用npm脚本为前端开发人员开发一个构建系统,在
package.json
scripts
部分定义了几个任务。这些包括典型的任务,例如:缩小css、代码过滤、生成文档、传输JavaScript……等等

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

为了测试在重新安装所需的节点包后构建系统是否可以成功复制,我执行以下操作:

  • 制作项目目录的副本
  • 从复制的项目目录中删除
    节点\u模块
    文件夹
  • 通过
    $npm install
    在复制的项目目录中执行新安装
  • 正如预期的那样,这将根据
    package.json
    devDependencies
    部分中列出的内容下载所需的节点包

    但是,在运行新的
    npm安装后
    定义的一些脚本任务,例如:
    $npm run watch
    不再从复制的项目中成功运行

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

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

    因此,我现在的处境是,如果不包含
    节点_modules
    文件夹(及其内容),我就无法共享项目目录。理想情况下,我希望与其他开发人员共享样板代码,他们只需将
    cd
    放到项目目录中,自己运行
    $npm install

    如果您能就如何解决这个问题提出建议,我将不胜感激。这不是我以前遇到过的


    提前感谢。

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

    要进行验证,请转到原始目录并运行
    npm-outleted
    。这将为您提供所有过时依赖项的列表,以及安装的当前版本、包.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
    
    如果
    当前
    想要的
    版本号有任何不同,则在新目录中重新安装将导致安装不同的版本

    大多数npm包使用。除非您在
    包.json
    中使用
    *
    作为版本号,否则大部分情况下您都不会破坏更改。然而,包作者是人类,有时他们会搞乱semver。还有一些npm包不遵循semver。这些软件包要么不应使用,要么应固定其版本号


    如果您发布您的
    包.json的
    devDependencies
    部分,可能会有所帮助。我猜您的
    包.json
    (带有
    ^
    ~
    *
    )中对您的版本范围进行了松散的指定。您的原始目录包含过时的版本。在新目录中运行
    npm install
    时,将安装更高(且不兼容)的版本(具有不同的依赖项)

    要进行验证,请转到原始目录并运行
    npm-outleted
    。这将为您提供所有过时依赖项的列表,以及安装的当前版本、包.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
    
    如果
    当前
    想要的
    版本号有任何不同,则在新目录中重新安装将导致安装不同的版本

    大多数npm包使用。除非您在
    包.json
    中使用
    *
    作为版本号,否则大部分情况下您都不会破坏更改。然而,包作者是人类,有时他们会搞乱semver。还有一些npm包不遵循semver。这些软件包要么不应使用,要么应固定其版本号

    如果您发布
    package.json
    devDependencies
    部分,可能会有所帮助