使用npm包

使用npm包,npm,workflow,gulp,Npm,Workflow,Gulp,我想知道作为项目中的包经理,您是如何与npm合作的 我的项目使用以下文件结构: . |_ site/ | |_ bower_components/ | |_ index.html | |_ assets/ | |_ js/ | |_ scripts.js | |_ dist/ |_ node_modules/ | |_ underscore | |_ underscore-min.js | |_ gulpfile.js |_ package.json |_

我想知道作为项目中的包经理,您是如何与npm合作的

我的项目使用以下文件结构:

.
|_ site/
|  |_ bower_components/
|  |_ index.html
|  |_ assets/
|     |_ js/
|        |_ scripts.js
|
|_ dist/
|_ node_modules/
|  |_ underscore
|     |_ underscore-min.js
|
|_ gulpfile.js
|_ package.json
|_ ...
我将此吞咽任务用于服务/浏览器刷新:

gulp.task('serve', function () {
      browserSync.init({
        server: {
          baseDir: ['site']
        },
        notify: false
      });

      gulp.watch(['site/**/*.html'], reload);
      gulp.watch(['site/assets/css/**/*.css'], ['styles', reload]);
      gulp.watch(['site/assets/images/**/*'], ['images']);
    });
现在,当我想从我的node_modules文件夹(例如下划线)中包含脚本时,我会这样做:

<script src="../node_modules/underscore/underscore-min.js"></script>

然而,这将给我一个404文件,在下划线-min.js文件中找不到,但路径正确吗?在“gulp serve task”中,基本目录设置为“site”,因此我想我不能将一个文件夹与“./”一起放上去

我无法告诉npm将其模块保存在其他文件夹中。此外,项目结构在我看来非常常见,所以我想知道如何设置一个项目来处理这些包


使用npm安装somePackage时工作流会是什么样子?您是否将其从内部的节点模块复制到您的项目文件夹(例如assets/js/)。

我也有同样的问题。解决方案是使用另一种方法来定义相对路径。 我相信你在问题中提出的问题在下面关于Stackoverflow的文章中得到了解决:

问候,,
Kees

使用browsersync,您可以传递“路由”选项:

那就做吧

<script src="node_modules/underscore/underscore-min.js"></script>



根据我的建议:只需使用并让browsersync为
dist
文件夹提供服务。您应该运行将用于生产的代码,而不是上载dist文件夹并希望它工作。

当您运行服务器时,客户端永远不能引用根路径之上的任何路径。作为一种解决方案,您可以将依赖项文件放在站点根文件夹的某个位置,比如
scripts
文件夹中。我写了一封信来做这件事

它的工作原理如下:

var-DepLinker=require('dep-linker');
deLinker.copyDependenciesTo(“./site/scripts”)
//完成

这不起作用,我的下划线仍然是404。可能是因为“如果文件位于baseDir位置,路由功能将不会重新写入请求”?请看:我使用的是一个修改版的yeoman“generator gulp webapp”,文件从应用程序文件夹中获得。当脚本文件被删除时,您将如何提供“dist”文件夹中的文件。在你使用“吞咽构建”后,就可以复制到那里。对我来说,总是编译文件并将其复制到“dist”似乎相当慢。请检查:Browserify+Watchify进行增量构建,因此它只重新编译已更改的javascript。
<script src="node_modules/underscore/underscore-min.js"></script>