Sails.js 指定要从自动插入中排除的 JS 文件
Sails.js specify JS files to exclude from auto-insertion
我正在尝试设置我的 sails 应用程序以使用 Browserify(工作正常)。但是,我不想将非浏览器化的文件自动注入到我的网页中。
在我的 tasks/pipeline.js
文件中,我尝试了这个(我需要浏览的 js 文件在他的 browserify
目录中):
// Client-side javascript files to inject in order
// (uses Grunt-style wildcard/glob/splat expressions)
var jsFilesToInject = [
// Load sails.io before everything else
'js/dependencies/sails.io.js',
// Dependencies like jQuery, or Angular are brought in here
'js/dependencies/**/*.js',
// All of the rest of your client-side js files
// will be injected here in no particular order.
'js/**/*.js',
// Ignore browserify directory
'!js/browserify/**/*'
];
但这不起作用,我的非浏览器化文件被注入网页。我是 Sails 的新手,所以这很可能根本不是实现这一目标的正确方法。任何建议将不胜感激。
其实很简单,就是不要把**
放在那里。 **
通配符表示递归搜索。我要做的是:
var jsFilesToInject = [
// Load sails.io before everything else
'js/dependencies/sails.io.js',
// Dependencies like jQuery, or Angular are brought in here
'js/dependencies/**/*.js',
// All of the rest of your client-side js files
// will be injected here in no particular order.
'js/*.js', //all files directly in .js folder will be included, but any folders not specified above will not
];
然后,如果您将一个文件夹添加到您实际想要包含的 js 目录,只需确保在依赖项和最后一行之间指定它,例如
'js/folderIWantToInclude/**/*.js'
不要忘记,grunt 会将所有文件复制到 .tmp 中,有时您需要手动清除它才能使此类更改生效。
我还建议访问 Grunt Configuration file docs 以供参考 - 执行此包含的是 grunt,而不是 sails。
您可以按照自己的方式进行快速修复:
在 pipeline.js
的末尾替换以下代码块:
module.exports.cssFilesToInject = cssFilesToInject.map(function(path) {
return '.tmp/public/' + path;
});
module.exports.jsFilesToInject = jsFilesToInject.map(function(path) {
return '.tmp/public/' + path;
});
module.exports.templateFilesToInject = templateFilesToInject.map(function(path) {
return 'assets/' + path;
});
有
module.exports.cssFilesToInject = cssFilesToInject.map(function(path) {
var tmpPath = '.tmp/public/';
if (path.substring(0,1) == '!')
return '!' + tmpPath + path.substring(1);
return tmpPath + path;
});
module.exports.jsFilesToInject = jsFilesToInject.map(function(path) {
var tmpPath = '.tmp/public/';
if (path.substring(0,1) == '!')
return '!' + tmpPath + path.substring(1);
return tmpPath + path;
});
module.exports.templateFilesToInject = templateFilesToInject.map(function(path) {
var tmpPath = 'assets/';
if (path.substring(0,1) == '!')
return '!' + tmpPath + path.substring(1);
return tmpPath + path;
});
如您所见,原始代码将 tmp 文件夹的相对路径添加到给定规则的前面,导致 !
位于最终路径的中间位置。如需完整说明 see my answer to a very similar issue.
您可以使用 "exclude" (!) 运算符排除文件,如下所示:
var cssFilesToInject = [
'styles/**/*.css',
'!styles/ie8.css',
'!styles/ie9.css'
];
// Client-side javascript files to inject in order
// (uses Grunt-style wildcard/glob/splat expressions)
var jsFilesToInject = [
// Load sails.io before everything else
'js/dependencies/sails.io.js',
// Dependencies like jQuery, or Angular are brought in here
'js/dependencies/**/*.js',
// All of the rest of your client-side js files
// will be injected here in no particular order.
'js/**/*.js',
"!js/dependencies/respond/respond.src.js",
];
我正在尝试设置我的 sails 应用程序以使用 Browserify(工作正常)。但是,我不想将非浏览器化的文件自动注入到我的网页中。
在我的 tasks/pipeline.js
文件中,我尝试了这个(我需要浏览的 js 文件在他的 browserify
目录中):
// Client-side javascript files to inject in order
// (uses Grunt-style wildcard/glob/splat expressions)
var jsFilesToInject = [
// Load sails.io before everything else
'js/dependencies/sails.io.js',
// Dependencies like jQuery, or Angular are brought in here
'js/dependencies/**/*.js',
// All of the rest of your client-side js files
// will be injected here in no particular order.
'js/**/*.js',
// Ignore browserify directory
'!js/browserify/**/*'
];
但这不起作用,我的非浏览器化文件被注入网页。我是 Sails 的新手,所以这很可能根本不是实现这一目标的正确方法。任何建议将不胜感激。
其实很简单,就是不要把**
放在那里。 **
通配符表示递归搜索。我要做的是:
var jsFilesToInject = [
// Load sails.io before everything else
'js/dependencies/sails.io.js',
// Dependencies like jQuery, or Angular are brought in here
'js/dependencies/**/*.js',
// All of the rest of your client-side js files
// will be injected here in no particular order.
'js/*.js', //all files directly in .js folder will be included, but any folders not specified above will not
];
然后,如果您将一个文件夹添加到您实际想要包含的 js 目录,只需确保在依赖项和最后一行之间指定它,例如
'js/folderIWantToInclude/**/*.js'
不要忘记,grunt 会将所有文件复制到 .tmp 中,有时您需要手动清除它才能使此类更改生效。 我还建议访问 Grunt Configuration file docs 以供参考 - 执行此包含的是 grunt,而不是 sails。
您可以按照自己的方式进行快速修复:
在 pipeline.js
的末尾替换以下代码块:
module.exports.cssFilesToInject = cssFilesToInject.map(function(path) {
return '.tmp/public/' + path;
});
module.exports.jsFilesToInject = jsFilesToInject.map(function(path) {
return '.tmp/public/' + path;
});
module.exports.templateFilesToInject = templateFilesToInject.map(function(path) {
return 'assets/' + path;
});
有
module.exports.cssFilesToInject = cssFilesToInject.map(function(path) {
var tmpPath = '.tmp/public/';
if (path.substring(0,1) == '!')
return '!' + tmpPath + path.substring(1);
return tmpPath + path;
});
module.exports.jsFilesToInject = jsFilesToInject.map(function(path) {
var tmpPath = '.tmp/public/';
if (path.substring(0,1) == '!')
return '!' + tmpPath + path.substring(1);
return tmpPath + path;
});
module.exports.templateFilesToInject = templateFilesToInject.map(function(path) {
var tmpPath = 'assets/';
if (path.substring(0,1) == '!')
return '!' + tmpPath + path.substring(1);
return tmpPath + path;
});
如您所见,原始代码将 tmp 文件夹的相对路径添加到给定规则的前面,导致 !
位于最终路径的中间位置。如需完整说明 see my answer to a very similar issue.
您可以使用 "exclude" (!) 运算符排除文件,如下所示:
var cssFilesToInject = [
'styles/**/*.css',
'!styles/ie8.css',
'!styles/ie9.css'
];
// Client-side javascript files to inject in order
// (uses Grunt-style wildcard/glob/splat expressions)
var jsFilesToInject = [
// Load sails.io before everything else
'js/dependencies/sails.io.js',
// Dependencies like jQuery, or Angular are brought in here
'js/dependencies/**/*.js',
// All of the rest of your client-side js files
// will be injected here in no particular order.
'js/**/*.js',
"!js/dependencies/respond/respond.src.js",
];