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标记