【问题标题】:Is there a way to automatically copy files to wwwroot?有没有办法自动将文件复制到 wwwroot?
【发布时间】:2021-02-04 07:42:56
【问题描述】:

我的 index.html 位于名为 wwwroot 的目录中,并且可以从 locahost:5001 上的浏览​​器访问它。当我使用 NPM 安装一些包时,目录 node_modules 被放置在与 wwwroot 相同的级别。

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

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

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

有没有这样的包?还是需要使用构建脚本来完成?

【问题讨论】:

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


【解决方案1】:

此答案建议使用 GULP which seems dated now

您不应该像 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 文件,删除 cmets,甚至可以创建 watch 任务,在文件更改后立即执行其他任务。

【讨论】:

  • 只要我的预感似乎是准确的,我还有一个与复制过程有关的问题。在您的示例中,您只需复制所有 CSS 和 JS 文件。但是,我注意到包的结构本身看起来像是可编译的项目。或许,我是否应该使用 Gulp 以仅获取相关所有相关工件以某种方式执行它们?我在想某些包可能包含字体、图像等(您的示例未涵盖),并且只需要复制缩小的文件。有一个目录叫dist,例如...
  • 是的,你当然可以复制所有的node_modules 文件夹,我认为它类似于gulp.src('node_modules/'),但你应该创建自己的规则。例如,一些模块有testexamples 文件夹,所以你不需要在你的wwwroot 中。对于我的示例,我只是使用了自己的 gulp 文件并对其进行了修改以提供示例。 (我手动将我需要的唯一模块复制到 wwwroot 这提醒我我应该真正改变它并像你一样自动化它......)。 dist 包含带有缩小文件的生产版本,但并非所有模块都有它
  • 我更新了答案的代码示例。这会将所有内容复制到您的 wwwroot。我不是很先进,我不久前才学习了基础,但老实说我认为你不需要一切,不要用无用的东西污染你的wwwroot。我认为你应该只复制你实际使用的模块。 (第一次复制所有内容时可能会导致 Visual Studio 崩溃)
猜你喜欢
  • 1970-01-01
  • 2022-12-11
  • 2012-11-18
  • 2011-09-19
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 2023-01-13
  • 2011-02-02
相关资源
最近更新 更多