Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用browserify使bower与npm一起工作_Node.js_Npm_Bower_Commonjs_Browserify - Fatal编程技术网

Node.js 使用browserify使bower与npm一起工作

Node.js 使用browserify使bower与npm一起工作,node.js,npm,bower,commonjs,browserify,Node.js,Npm,Bower,Commonjs,Browserify,我们都被过多的JavaScript包管理解决方案所祝福和诅咒,所有这些都有各自的优点。出于与此无关的原因,我已将npm作为我的主要解决方案。然而,在其他系统(如bower和component)上有太多好的代码,无法忽略这些解决方案。所以,我希望建立一个环境,在这里我可以使用browserify从npm和bower加载包(我们将为另一个问题保存组件) 到目前为止,我想到的最好的方法是使用运行bower安装的postinstall脚本设置我的package.json: { ... configu

我们都被过多的JavaScript包管理解决方案所祝福和诅咒,所有这些都有各自的优点。出于与此无关的原因,我已将npm作为我的主要解决方案。然而,在其他系统(如bower和component)上有太多好的代码,无法忽略这些解决方案。所以,我希望建立一个环境,在这里我可以使用browserify从npm和bower加载包(我们将为另一个问题保存组件)

到目前为止,我想到的最好的方法是使用运行
bower安装的
postinstall
脚本设置我的
package.json

{
  ... configuration ...

  "scripts": {
    "postinstall": "bower install"
  }
}
这将在安装一级依赖项(即Strater bower依赖项和Strater npm依赖项)时构建正确的目录结构:

它使用browserify上的转换构建得很好,
browserify-t debowerify
,但是,当我想在另一个项目中从npm安装MyMixedComponent时,
npm install MyMixedComponent
,目录结构是按照npm的预期构建的:

- MyNewProject
  - main.js
  - package.json
  - node_modules
    - MyMixedComponent
      - main.js
      - package.json
      - node_modules
        - npmDependency
      - bower_components
        - bowerComponent
由于bower是一个扁平的依赖树,因此在尝试使用browserify和debowerify构建时,这当然不起作用。实际上需要的是这样的东西:

- MyNewProject
  - main.js
  - package.json
  - node_modules
    - MyMixedComponent
      - main.js
      - package.json
      - node_modules
        - npmDependency
   - bower_components
     - bowerComponent

或者,可以修改debowerify来识别多个bower目录,但这会破坏bower的可爱特性,即它是一个平面树,这对于前端依赖性更好。有没有想过这是如何实现的,或者我应该祈祷有一天我们都能在依赖关系管理上达成一致?

在同一个代码库中有多个bower_组件的想法,有可能引入某些特定框架的副本

试着走以下道路:

  • 将混合(npm和bower)软件包安装到我的当前软件包中时
  • 按常规安装npm(嵌套)
  • 对于混合包
    中的每个bower组件,将
    安装到当前包的根目录中
  • 一个,可以只更改当前包的bower.json
  • 并警告用户进行bower安装,因为bower.json现在已使用其他npm/bower混合包中的组件进行更新

  • @PaulSweatte的可能重复您提到的问题涉及Angular最佳实践与AMD/CommonJS模块范例之间的冲突。该问题旨在纠正包装管理系统的冲突结构;一个层次(npm)和一个平面(凉亭)。我的目标是在项目中利用这两个系统,同时保持模块化。i、 e.当项目被视为独立项目或库时,依赖项会正确加载。在这种情况下,可能对您有效。您是否尝试过将“napa”与browserify一起使用以访问bower软件包?而且,是的,我没有完全理解您的要求,但它似乎是在该领域中使用的工具。为什么不同时使用这两种工具并使用
    grunt
    ?我想知道是否有办法避免修改根包的bower.json,因为这可能在版本控制下。可能只是为每个嵌套依赖项运行
    bower install
    。对于在自己的bower_components目录中查找的嵌套包,仍然会得到重复的代码:/
    - MyNewProject
      - main.js
      - package.json
      - node_modules
        - MyMixedComponent
          - main.js
          - package.json
          - node_modules
            - npmDependency
       - bower_components
         - bowerComponent