Javascript 使用gulp将外部库移动到wwwroot文件夹

Javascript 使用gulp将外部库移动到wwwroot文件夹,javascript,build,npm,gulp,asp.net-core,Javascript,Build,Npm,Gulp,Asp.net Core,我正在使用VS2015+ASP.net vnext+Angular 2+Typescript+gulp.js。我已自动将我的脚本/***.ts文件移动到wwwroot/app文件夹。现在,我想对我的库(如Angular 2)执行同样的操作。我想要一个吞咽过程注入 angular.js内index.html内节点 angular.min.js内部index.html内部节点 当然,我希望在不了解库的情况下,自动为我的所有LIB执行此操作: .min.js(生产) .js(开发) any.j

我正在使用VS2015+ASP.net vnext+Angular 2+Typescript+gulp.js。我已自动将我的
脚本/***.ts
文件移动到
wwwroot/app
文件夹。现在,我想对我的库(如Angular 2)执行同样的操作。我想要一个吞咽过程注入

  • angular.js
    index.html
    节点
  • angular.min.js
    内部
    index.html
    内部
    节点
当然,我希望在不了解库的情况下,自动为我的所有LIB执行此操作:

  • .min.js
    (生产)
  • .js
    (开发)
any.js的缩小可以由我来完成

实际上,我只需要考虑
package.json
中的所有
依赖项。。。但是我迷路了

我的想法可以实现吗?或者可能已经存在一个工具了吗?还是应该将工作流分解为更多的手动步骤,比如我必须复制/粘贴某个库

或者是否可以获取
依赖项
名称并使用
.js
将其连接,然后在
节点模块
文件夹下搜索此文件。。。(有点黑,不安全…)

更新

重新措辞/完善我的问题:


当触发特定事件(如build/clear/etc)时,如何将我的npm
依赖项(而不是
devdeependencies
)自动添加到环境
“Development”
节点中。

所以您的问题是希望将脚本自动注入HTML,对吗?您可以使用该模块进行此操作


对于将资产复制到其他文件夹,有许多模块可以将文件从一个文件夹复制或链接到另一个文件夹。是我能找到的第一个。

有一个小的标记帮助程序,叫做
asp-src-include

想象一下,您有一些*.js文件要包括:

<script src="/app/app.js"></script>
<script src="/app/controller/controllerA.js"></script>
<script src="/app/controller/controllerB.js"></script>
<script src="/app/service/userservice.js"></script>

等等。您可以用一个`´标记包含所有这些

<script asp-src-include="~/app/**/*.js"></script>

因此,对于生产/开发部署,Razor标记可能如下所示

<environment names="Development">            
    <script asp-src-include="~/app/**/*.js"></script>
</environment>
<environment names="Staging,Production">
    <script asp-src-include="~/app/**/*.min.js"></script>
</environment>

为此,您需要在
*.cshtml
文件或
\u Layout.cshtml
中使用
@addTagHelper*、Microsoft.AspNet.Mvc.TagHelpers*、Microsoft.AspNet.Mvc.TagHelpers>声明(从RC1或RC2开始,它是'@addTagHelper*、Microsoft.AspNet.Mvc.TagHelpers'-不带双引号)

编辑

有一个名为
gulpnpm files
的模块,它执行类似的操作,将所有*.js文件复制到目标文件夹中。如果您想编写自己的模块来扩展功能,可以在上查看它的源代码

但这可能不是您想要的,因为文件夹通常包含多个文件,例如
angular2
(AngularJS 2.0)包含十几个文件(*.js和*.ts),但您最感兴趣的是编译/缩小的文件,如
angular2/bundles/*
中的
angular2.js
angular2.min.js
angular.dev.js

特定依赖项的
package.json
未提供有关在何处查找此编译文件的信息。所以我想,除非您想将所有文件复制到
wwwroot
,否则无法实现自动化,这在我看来毫无意义,特别是如果您想使用
asp-src-include
,因为它对所包含的内容没有影响,所以您希望尽量减少
wwwroot
文件夹中的*.js文件数量


我想您最好通过gulp任务手动复制依赖项,然后使用
asp-src-include
将它们自动包含到razor生成的html文件中。

您的解决方案答案是一个很小的部分;-)我不想使用这样的东西:It not needed。我的asp.net项目html文件中已经有了这些脚本,请在asp.net上下文中回答。@Pascal:您确定可以在简单的html文件中使用标记,这些文件甚至可能在
wwwroot
文件夹中?据我所知,它是Razor的一部分,仅当
.cshtml
\u Layout.cshtml
中的
@addTagHelper
时,它才会在那里工作。我没有合适的环境在这里尝试…是的,我完全忘记了当我想使用razor时我不能使用静态html文件。。。我昨天刚删除了我的剃须刀哈哈,现在我要恢复了。asp src include还接受逗号分隔的字符串/路径数组,这很酷,因此您可以包含app.js和lib.js文件。您的回答还不是一个解决方案,因为我的问题是关于libs文件的处理,尽管我很感谢asp src include提示!简而言之,我的问题是:“如何将我的npm依赖项(而不是开发依赖项)自动添加到环境”开发“触发特定事件(如build/clear/etc)时的节点。@Pascal:使用
gulp npm files
npm包更新了帖子,但我认为没有可靠的方法自动执行它,而不复制包内的所有文件(这与上面的
asp src include
方法冲突)有趣的是,我们都来自德国,5年半之后;-)是的,你正好解决了我的问题。识别的可靠性。。。bower的main属性告诉我们主文件是什么,npm的package.json带有“depencies”,比如“angular2”。文件夹名称也是“angular2”。那可能是个意外,但我不认为。从这一点上,我们可以搜索angular2.js。这也起到了作用,但可能只适用于angular2。是的,现在我将把我的库从node_modules文件夹中大量复制到wwwroot/lib/这里,并使用asp src include using development。当我为生产构建包时,我吞下包,然后将包复制到wwwroot/lib/all.min.js。也许以后我会尝试制作一个适用于.cshtm的wiredep任务