有没有办法自动将文件复制到wwwroot?

时间:2016-11-14 16:11:16

标签: node.js npm asp.net-core

我的 index.html 位于名为 wwwroot 的目录中,并且可以通过 locahost:5001 上的浏览器进行访问。当我使用NPM安装了一些软件包时, node_modules 目录与 wwwroot 处于同一级别。

当我链接到文件时,我使用这样的相对路径。

  

HREF =" ../ node_modules / package_this_or_that / package.min.js"

在我看来,更好的方法是将这些内容传递到 wwwroot 目录并让它们驻留在那里。并非所有包的内容,只是实际使用的文件(跳过readmes等)。

是否有包装?或者是否需要使用构建脚本来完成?

1 个答案:

答案 0 :(得分:4)

您不应该像html或cshtml文件那样从前端访问node_modules文件。所以你是对的,你应该将它们复制到wwwroot文件夹。

您可以使用Tseng comment中链接的grunt,但我个人更喜欢Gulp,我认为它更快更容易使用。

您的package.json文件:

{
    "version": "1.0.0",
    "name": "asp.net",
    "private": true,
    "devDependencies": {
        "gulp": "3.9.1",
        "gulp-cached": "1.1.0",
    }
}

然后在项目的根级别创建一个gulpfile.js,你可以写一些像

var gulp = require('gulp'),
cache = require('gulp-cached'); //If cached version identical to current file then it doesn't pass it downstream so this file won't be copied 

gulp.task('default', 'copy-node_modules');

gulp.task('copy-node_modules', function () {

try {

    gulp.src('node_modules/**')
        .pipe(cache('node_modules'))
        .pipe(gulp.dest('wwwroot/node_modules'));
    }
    catch (e) {
        return -1;
    }
    return 0;
});

最后打开Task Runner Explorer(如果您使用的是Visual Studio)并执行default任务或直接执行copy-node_modules任务。

Gulp非常有用,我建议你探索其他不同的gulp任务。您可以连接和缩小CSS和JS文件,删除注释,甚至可以创建watch任务,以便在文件更改时立即执行其他任务。