Node.js 在安装节点后的my package.json文件中,我希望有一个命令可以使用一个命令自动编译我的任何sass文件?
所以,为了概述我想要的内容,在我的脚本中,我只希望有一个命令。因此,我希望能够将参数传递到我正在运行的代码中,如下所示:Node.js 在安装节点后的my package.json文件中,我希望有一个命令可以使用一个命令自动编译我的任何sass文件?,node.js,npm,node-modules,node-sass,npm-scripts,Node.js,Npm,Node Modules,Node Sass,Npm Scripts,所以,为了概述我想要的内容,在我的脚本中,我只希望有一个命令。因此,我希望能够将参数传递到我正在运行的代码中,如下所示: "scripts": { "compile:'variable'": "node-sass sass/variable.scss css/variable.css -w" } 在npm中是否有这样的方法,以便我可以将参数传递到我要运行的命令中?在命令行中,我希望以一种简单的方式编译。我会说,如果我想编译一个名为home的文件。因此,我希望能够在命令行中键入: npm run
"scripts": {
"compile:'variable'": "node-sass sass/variable.scss css/variable.css -w" }
在npm中是否有这样的方法,以便我可以将参数传递到我要运行的命令中?在命令行中,我希望以一种简单的方式编译。我会说,如果我想编译一个名为home的文件。因此,我希望能够在命令行中键入:
npm run compile:home
然后,我希望通过package.json获取以下命令,并运行节点sass来编译它:
"node-sass scss/home.scss css/home.css -w"
如果您有任何问题,请随时发表评论。不幸的是,npm脚本没有内置的方式来实现您的需求,无法成功地跨平台运行
但是,满足您需求的两种方法如下……您可能需要解决方案B:
解决方案A:
如果您只有几个.scss文件要编译为.css,那么最简单的解决方案是为每个文件创建一个npm脚本。例如:
脚本:{
编译:home:node sass sass/home.scss css/home.css-w,
编译:quxx:node-sass-sass/qux.scss-css/quxx.css-w
}
这将允许您使用所需的命令语法运行每个脚本,即
$npm运行编译:主页
$npm运行编译:quxx
但是,这可能并不理想,因为我猜您有很多.scss文件-因此您的问题是如何在脚本中使用变量
解决方案B:
一种跨平台工作并允许您通过CLI将文件名定义为参数的解决方案是编写nodejs实用程序脚本。然后可以通过package.json的scripts部分调用nodejs脚本
以下提供了实现此目标的必要步骤:
创建一个nodejs脚本,如下所示:让我们将文件命名为sass-to-css.js
sass-to-css.js
常数fs=要求“fs”;
常量路径=要求“路径”;
const execSync=需要“子进程”。execSync;
//没有提供文件名参数时出错。
如果process.argv[2]{
console.log'\x1b[31mERR!\x1b[0m必须提供尾随文件名参数';
process.exit1;
}
const fileName=process.argv[2];
const srcPath=`${path.join'sass',fileName}.scss`;
//检查源.scss文件是否存在。
如果!fs.existsSyncsrcPath{
console.log'\x1b[31mERR!\x1b[0m路径找不到:%s',srcPath;
process.exit1;
}
//节点\模块目录中节点sass可执行文件的路径。
const executablePath=path.join'node_modules','.bin','node sass';
//结果.css文件的目标路径。
const destPath=`${path.join'css',fileName}.css`;
//要调用的命令。
const cmd=`${executablePath}${srcPath}${destPath}-w`;
//执行命令。
execSynccmd{
cwd:process.cwd
};
将sass-to-css.js保存在项目目录的根目录中,与package.json存储在同一文件夹中。例如:
.
├── ...
├── 节点单元
│ └── ...
├── package.json
├── 无礼
│ ├── home.scss
│ └── ...
└── sass-to-css.js一些问题…1.你的source.scss文件是否始终存在于sass文件夹中?.2.生成的.css文件是否始终保存在css文件夹中?3.css/variable.scss部分是否应该是css/variable.css,即.css后缀而不是.scss是的,这将始终是这样的,因为这是我的应用程序的结构。是的,这就是我的意思,我会编辑这个问题来解决这个问题。不,我确实需要-w标记,因为我只有很多页面,所以我需要在单独处理页面时使用-w标记。你是说当你将-w标记添加到sass-to-css.js中的cmd变量时它不起作用吗?根据我回答中更新的代码。不,我只是想在那里使用-w标记