PlayNicely.NpmNpx 1.3.4-beta-289

This is a prerelease version of PlayNicely.NpmNpx.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package PlayNicely.NpmNpx --version 1.3.4-beta-289                
NuGet\Install-Package PlayNicely.NpmNpx -Version 1.3.4-beta-289                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PlayNicely.NpmNpx" Version="1.3.4-beta-289">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add PlayNicely.NpmNpx --version 1.3.4-beta-289                
#r "nuget: PlayNicely.NpmNpx, 1.3.4-beta-289"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install PlayNicely.NpmNpx as a Cake Addin
#addin nuget:?package=PlayNicely.NpmNpx&version=1.3.4-beta-289&prerelease

// Install PlayNicely.NpmNpx as a Cake Tool
#tool nuget:?package=PlayNicely.NpmNpx&version=1.3.4-beta-289&prerelease                

Play Nicely - npm & npx

NuGet package to inject npm and npx tooling into your project.

The purpose of this project is to support node_modules that handle build time tasks in web/js projects, such as the awesome tailwindcss, Sass, or TypeScript (without having to install these modules globally, although Node.js does need to be installed).

Installation

Simply install this package into your project like any other NuGet dependency.

Install-Package PlayNicely.NpmNpx

Getting Started

The default settings create a package.json if there isn't one already (during build), using npm init -y, in the project root directory (the owning project of this dependency). That @(NpmProject) is the one included in the build.

This project on its own doesn't do anything particularly interesting. The easiest way to utilize it is to use one of its dependent projects for sass or tailwindcss. But if you need to add a npm package for something else, you can and it allows you to call it during the dotnet build process.

An example with tailwindcss

Let's say you want to use tailwindcss in you web project. From a shell:

  1. Install tailwindcss as a dev dependency, and create a base tailwind.config.js.
    npm install -D tailwindcss
    npx tailwindcss init
    
  2. Configure your tailwind environment.
  3. Add a tailwindcss build <Target> to your (csproj) project file. Notice that the target (below) depends on npm-install and runs AfterTargets BeforeBuild. It depends on any node modules being installed and any BeforeBuild processing, before generating the tailwind site.css file.
    <Target Name="tailwind-build"
            DependsOnTargets="npm-install"
            AfterTargets="BeforeBuild">
      <Exec Command="npx tailwind build -i ./src/site.css -o ./wwwroot/css/site.css" />
      <ItemGroup>
    
        <Content Include="wwwroot/css/site.css" Exclude="@(Content)" />
      </ItemGroup>
    </Target>
    

Configuration

The package includes two MSBuild Project files, that are <Import>ed into your project:

  • PlayNicely.NpmNpx.props - contains the most common default properties for node projects, package.json file in the root of the project.
    • NpmRootDirectory - The root of the node project, defaults to the project that is installing this dependency.
    • NpmProject - A default (MSBuild) item NpmProject, this is the package.json file in the root of the dependent project.
  • PlayNicely.NpmNpx.targets - A basic set of (MSBuild) targets:
    • npm-version and npx-version - to check that npm and npx, respectively, are installed and fail the build if they aren't.
    • npm-init - Runs npm init -y for any @(NpmProject) items that have not been initialized with a package.json.
    • npm-install - Runs npm install for any @(NpmProject) items, to ensure node dependencies have been installed locally.

Other properties that effect build:

  • <NpxRequired> - set this to false if your build does not require the npx tool. If this property is false, then the build will not fail if npx is not detected. The default for this property is true.
  • <NpmAutoInit> - set this to false if you want to manually initialize your node project, with npm init. The default for this property is true.

Multiple NpmProject's

The most common scenario is for a web project to contain a single package.json file and node_nodules directory. You can have multiple projects by defining them in you MSBuild (csproj) project file. Each node project must be in it's own directory.

npm init -y for missing package.json files.

If a @(NpmProject) is defined but the package.json has not been created, the build targets will initialize those directories using npm init -y by default. This creates an empty node project with no dependencies (unless the project directory already contains a node_modules directory). This is a convience for the build, but you will still need to add your own npm dependencies using npm install.

It is recommended that you create your package.json files manually and add any dependencies using npm init and npm install, if you don't, the build targets will call npm init -y for each @(NpmProject) that is defined where the package.json does not exist. This auto init of the package.json file can be disabled by setting the build property <NpmAutoInit>false</NpmAutoInit>.

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

  • .NETStandard 1.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on PlayNicely.NpmNpx:

Package Downloads
PlayNicely.Sass

An MSBuild targets package that adds support for the sass transpiler in a .NET project.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.3.4-beta-322 80 9/28/2024
1.3.4-beta-297 78 9/21/2024
1.3.4-beta-295 74 9/21/2024
1.3.4-beta-289 106 9/14/2024
1.3.4-beta-281 73 9/1/2024
1.3.3 97 6/1/2024
1.3.3-beta-274 86 7/12/2024
1.3.3-beta-266 73 6/1/2024
1.3.2 101 6/1/2024
1.3.2-beta-262 95 6/1/2024
1.3.2-beta-260 86 6/1/2024
1.3.2-beta-253 78 6/1/2024
1.3.2-beta-249 101 5/31/2024
1.3.2-beta-239 87 5/22/2024
1.3.2-beta-233 87 5/12/2024
1.3.2-beta-213 99 5/7/2024
1.3.2-beta-207 82 4/28/2024
1.3.2-beta-200 154 4/14/2024
1.3.1 332 4/11/2024
1.3.1-beta-191 133 4/11/2024
1.3.1-beta-177 115 4/8/2024
1.3.0 938 3/12/2024
1.3.0-beta-169 122 3/22/2024
1.3.0-beta-157 104 3/13/2024
1.3.0-beta-155 110 3/12/2024
1.2.1.93-prerelease-2024011... 149 1/11/2024
1.2.1.91-prerelease-2024011... 121 1/11/2024
1.2.1 159 1/24/2024
1.2.1-prerelease-20240124-1... 99 1/24/2024
1.2.1-prerelease-20240118-1... 95 1/18/2024
1.2.0.82 106 1/10/2024
1.2.0.81-prerelease-2024011... 81 1/10/2024
1.2.0.76-prerelease-2024011... 107 1/10/2024
1.1.0.74 160 1/8/2024
1.1.0.73-prerelease-2024010... 109 1/8/2024
1.1.0.72-prerelease-2024010... 100 1/8/2024
1.0.3.70 142 1/8/2024
1.0.3.69-prerelease-2024010... 94 1/8/2024
1.0.3.68-prerelease-2024010... 122 1/8/2024
1.0.3.67-prerelease-2024010... 91 1/8/2024
1.0.3.64-prerelease-2024010... 120 1/5/2024
1.0.3.62-prerelease-2024010... 115 1/5/2024
1.0.3.61-prerelease-2024010... 141 1/5/2024
1.0.3.57-prerelease-2024010... 126 1/3/2024
1.0.3.56-prerelease-2024010... 118 1/3/2024
1.0.3.55 179 12/28/2023
1.0.3.54-prerelease-2023122... 111 12/28/2023
1.0.2.51 154 12/28/2023
1.0.2.50-prerelease-2023122... 124 12/28/2023