使用 npm 包
Working with npm packages
我想知道您在项目中作为包管理器如何使用 npm?
我的项目使用以下文件结构:
.
|_ site/
| |_ bower_components/
| |_ index.html
| |_ assets/
| |_ js/
| |_ scripts.js
|
|_ dist/
|_ node_modules/
| |_ underscore
| |_ underscore-min.js
|
|_ gulpfile.js
|_ package.json
|_ ...
我使用这个 gulp 服务/浏览器刷新任务:
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 File not found on the underscore-min.js file but the path is correct?在 "gulp serve task" 中,基本目录设置为 "site" 所以我想我不能用“../”进入一个文件夹?
我无法告诉 npm 将其模块保存在不同的文件夹中。此外,项目结构在我看来很常见,所以我想知道有人会如何设置一个项目来使用这些包。
使用 npm install somePackage 时,工作流程会是什么样子?您是否将其从 node_modules 中复制到您的项目文件夹中(例如 assets/js/..)。
我遇到了同样的问题。解决方案是使用另一种方式来定义相对路径。
我相信您在问题中提出的问题已在 Whosebug 上的以下文章中得到解决:
Relative Paths in Javascript in an external file
此致,
基斯
使用 browsersync,您可以传递 "routes" 选项:
// Since version 1.2.1
server: {
baseDir: "app",
routes: {
"/node_modules": "../node_modules"
}
}
那就干
<script src="node_modules/underscore/underscore-min.js"></script>
就我的建议而言:只需使用 browserify 并让 browsersync 为 dist
文件夹提供服务。您应该 运行 将要投入生产的代码,而不是上传 dist 文件夹并希望它能正常工作。
当您 运行 服务器时,客户端永远无法引用根路径之上的任何路径。作为一种解决方案,您可以将依赖文件放在站点根文件夹中的某个位置,例如 scripts
文件夹中。我写了一个 plugin 来做到这一点。
它是这样工作的:
var DepLinker = require('dep-linker');
DepLinker.copyDependenciesTo('./site/scripts')
// Done
我想知道您在项目中作为包管理器如何使用 npm?
我的项目使用以下文件结构:
.
|_ site/
| |_ bower_components/
| |_ index.html
| |_ assets/
| |_ js/
| |_ scripts.js
|
|_ dist/
|_ node_modules/
| |_ underscore
| |_ underscore-min.js
|
|_ gulpfile.js
|_ package.json
|_ ...
我使用这个 gulp 服务/浏览器刷新任务:
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 File not found on the underscore-min.js file but the path is correct?在 "gulp serve task" 中,基本目录设置为 "site" 所以我想我不能用“../”进入一个文件夹?
我无法告诉 npm 将其模块保存在不同的文件夹中。此外,项目结构在我看来很常见,所以我想知道有人会如何设置一个项目来使用这些包。
使用 npm install somePackage 时,工作流程会是什么样子?您是否将其从 node_modules 中复制到您的项目文件夹中(例如 assets/js/..)。
我遇到了同样的问题。解决方案是使用另一种方式来定义相对路径。 我相信您在问题中提出的问题已在 Whosebug 上的以下文章中得到解决: Relative Paths in Javascript in an external file
此致, 基斯
使用 browsersync,您可以传递 "routes" 选项:
// Since version 1.2.1
server: {
baseDir: "app",
routes: {
"/node_modules": "../node_modules"
}
}
那就干
<script src="node_modules/underscore/underscore-min.js"></script>
就我的建议而言:只需使用 browserify 并让 browsersync 为 dist
文件夹提供服务。您应该 运行 将要投入生产的代码,而不是上传 dist 文件夹并希望它能正常工作。
当您 运行 服务器时,客户端永远无法引用根路径之上的任何路径。作为一种解决方案,您可以将依赖文件放在站点根文件夹中的某个位置,例如 scripts
文件夹中。我写了一个 plugin 来做到这一点。
它是这样工作的:
var DepLinker = require('dep-linker');
DepLinker.copyDependenciesTo('./site/scripts')
// Done